设计模式心得体会_第1页
设计模式心得体会_第2页
设计模式心得体会_第3页
设计模式心得体会_第4页
设计模式心得体会_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、设计模式心得体会7 月初的一个周末,准确的说应该是 7 月 1 号周六,在 网上看到一本大话设计模式的书,而且看到很多很好的 评论,于是乎,下载了电子书看看,一下子看了几章之后, 对设计模式有了个了解,于是继续上网搜些其他资料,进一 步了解设计模式。 。最终结论:设计模式是个好东西,具体 怎么好,一两句话是无法概括的,也是从那天起,我就决定 学习设计模式, 于是就看大话设计模式 ,至七月十多号, 大概看了一百多页后,感觉有点难,有点看不下去的感觉, 于是上网找其他的好方法,无意间发现了李建忠老师的 c# 设计模式纵横谈系列讲座,微软的 web cast 课程,主要 讲解 gof 的 23 个设

2、计模式,每个一讲,加上一头一尾,共 25 讲,试听了一节课后,感觉很有用,于是就抽时间去边听 课边看书,并在我的博客里写下笔记,依赖加深印象,二来 可以督促我的进度。 。三个月以来,总算把设计模式学完一遍了,原计划是两 个月学完(一星期三个模式) ,由于。计划两个月学完实 际花了三个月, 感触多多, 收获多多对 c# 语言有了更进 一步的认识,对 oo 的思想有了更全面的了解。 。下一步在设计模式方面的计划:巩固并运用设计模式, 巩固:把大话设计模式 ,设计模式 ,设计模式可 复用的面向对象基础 ,敏捷软件开发: 原则、模式与实践 这些书再结合起来系统的看一看,当然还会去买一些我手头 上没有的

3、关于设计模式的书; 运用: 部门前几天也提倡用 c# 来改版 vb 程序,我想这是一个很好的平台,正好有机会把 理论的东西在实际中应用,理论加实际唯一的学习方 法。下面对各个模式再简单总结一下:1、创建型模式:singleton :解决的是实例化对象的个数的问题,比如 抽象工厂中的工厂、对象池等,除了 singleton 之外,其他 创建型模式解决的都是 new 所带来的耦合关系。abstract factory :创建一系列相互依赖对象,并能在 运行时改变系列。factory method:创建单个对象,在abstract factory有使用到。prototype :通过拷贝原型来创建新的

4、对象。factory method , abstract factory, builder都需要一个额外的工厂类来负责实例化 “一边对象” ,而 prototype 则是通过原型(一个特殊的工厂类)来克隆“易变对象” 。如果遇到 “易变类” ,起初的设计通常从 factory method 开始,当遇到更多的复杂变化时,再考虑重构为其他三种工 厂模式( factory method , abstract factory, builder)。2、结构性模式adapter :注重转换接口,将不吻合的接口适配对象, 用于旧代码复用、类库迁移等。bridge :注重实现抽象和实现的分离,支持对象多维度

5、 的变化。composite :注重同意接口,将“一对多”的关系转化 为“一对一”的关系,屏蔽对象容器内部实现结构,实现对 象和对象容器使用的一致性。decorator :注重稳定接口,在此前提下为对象扩展功 能,实现对象功能的扩展,避免子类膨胀。facade :注重简化接口,屏蔽各子系统的复杂性,提供 更高层接口供客户访问。flyweight :注重保留接口,在内部使用共享技术对对 象存储进行优化 (通过共享大量细粒度对象, 提供系统性能) 1 2 3proxy :注重假借接口,通过增加间接代理,实现更多 控制,屏蔽复杂性。3 、行为型模式template method :封装算法结构,定义

6、算法骨架,支 持算法子步骤变化。strategy :注重封装算法,支持算法的变化,通过封装 一系列算法,从而可以随时独立于客户替换算法。state :注重封装与状态相关的行为, 支持状态的变化,通过封装对象状态,从而在其内部状态改变时改变它的行为。memento:注重封装对象状态变化,支持状态保存、恢 复。mediator :注重封装对象间的交互,通过封装一系列对 象之间的复杂交互, 使他们不需要显式相互引用, 实现解耦chain of responsibility:注重封装对象责任,支持责任的变化,通过动态构建职责链,实现事务处理。command注重将请求封装为对象,支持请求的变化,通过将一

7、组行为抽象为对象,实现行为请求者和行为实现者 之间的解耦。iterator :注重封装特定领域变化,支持集合的变化,屏蔽集合对象内部复杂结构,提供客户程序对它的透明遍历。interpreter :注重封装特定领域变化,支持领域问题的频繁变化,将特定领域的问题表达为某种语法规则下的句 子,然后构建一个解释器来解释这样的句子,从而达到解决 问题的目的。observer :注重封装对象通知,支持通信对象的变化, 实现对象状态改变,通知依赖它的对象并更新。visitor :注重封装对象操作变化,支持在运行时为类结构添加新的操作,在类层次结构中,在不改变各类的前提 下定义作用于这些类实例的新的操作。正确

8、对待模式: 设计模式建立在对系统变化点的基础上进行,哪里有变 化,哪里就应用设计模式。设计模式应该以演化的方式来获得,系统的变化点往往 是经过不断演化才能准确定位。不能为了模式而模式,设计模式是一种软件设计的软力 量,而非规范标准,不应夸大设计模式的作用。设计模式心得体会( 2):从一开始学习设计模式至今已半年有余了,第一次接触 设计模式是一次不经意间在网上看到 大话设计模式 一书, 看了前言了第一章后,就感觉到其诱惑力对于一个程序员来 说,是无比巨大的。大概是去年十月份的时候,部门决定成 立读书会,系统学习设计模式。通过学习设计模式,除了学习到“一些设计模式” ,还 让我进一步熟悉、巩固了面

9、向对象思想,进一步熟悉了 c# 语言。我曾多次设想,我们如果引入面向对象思想,并结 合设计模式来重写或改善我们的系统(必须重写,虽说设计 模式只是一种思想,语言只是实现而已,但是选择一门好的 语言,无疑也是非常重要的,而 vb6 在面向对象方面却有很 大欠缺甚至不具备其条件) ,那么我们的系统将会像目前一 样需要那么多人来维护吗?大话设计模式一书其实是对 gof 的设计模式可复用面向对象软件的基础一书的“翻译” ,让人更容易 理解,用通俗易懂的语言阐述软件设计过程中的一些 “模式”, 在某种特定环境下,用最好的设计方法(代码高内聚,低耦 合,使其有良好的可扩展性和可维护性)达到我们的目的, 或

10、许其方法有很多很多,但是寻找到最好的方法却不是件容 易的事,设计模式是对前人的设计经验的一个总结,告诉我 们在某种特定的环境下,这样的设计师最好的,学习设计模 式有助于我们在设计软件的过程中少走很多弯路。 123我对 gof 的 23 个设计模式虽然都有看过,但是只有理 解,实现,应用及思考之后,才能真正体会其精妙之处,至 今体会较深的有以下几个模式: 1. strategy 封装系列 “算法”,让它们之间可以相互替换, “算法”并不是单指数 据结构中的算法,在实践中,它几乎可以封装任何类型的规 则,这使得策略模式的运用极其广泛; 2. template method 有人说是用的做多的模式,

11、只要有抽象类的地方,都可 以看到这个模式,它通过把不变行为移到父类中去,去除子 类中的重复代码,从而提供了一个很好的代码复用平台; 3. facade 提供了对基础架构的统一访问,减少复杂性,在 web 编程者中的三层架构,就是此思想,每一层都封装好一部分功能,提供给上一层统一的方法调用,整个 framework 体系就是 facade 模式的封装,随着升级到,越来越多复杂 的高级功能被封装,可以说 facade 无处不在; 4. abstract factory 提供一个创建一系列相关或相互依赖对象的接 口,而无需指定它们具体的类,咋一看,太抽象了,说个例 子,在三层架构中, bll 层对

12、dal 层的调用会直接用到 dal 层中的类,如果 dal 层是分别对 sql server , oracle 的访 问, bll 层需要根据实际情况决定实例化哪一个 dal 层中的 类,我们又希望在两种 dal 层切换时, bll 层和 ui 层都不做 改变,那么可在 bll 层和 dal 层中增加接口层(体现了“抽 象”的精神,或者说是“面向接口编程”的最佳体现)和抽 象工厂( dalfactroy ),让它来实例化 dal 层中的实例; 5. singleton 确保一个类仅有一个实例,并提供一个访问 它的全局访问点,如单件窗体,点一下menu,弹出一个窗体(实例),在关闭这个新窗体之前,再次点击该menu,不会再次出现同样的弹出窗体 (实例) 。篇幅有限,其他模式

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论