设计模式心得

1.继承是系统进化的主要手段,设计模式根据讨论方向分为三种,其一,讨论对象与场景的关系,以改善继承,以利于系统进。其二,讨论类的组合,其三,讨论类树的管理。最终目的是为进化中的系统提供代码结构优化的种种便利。

2. 工厂方法,原型,单例实际上是讨论对象与场景的关系。工厂方法实现了类与场景的代码级别的隔离,方便类的独立进化。原型分离了对象的初始化与对象的使用,为两个不同应用场景的交互提供便利,单例实际上从资源的角度限制场景对对象的使用次数。

解释器也是对象与场景的关系,工厂方法生产对象,解释器生产行为,类似于某种配置化,脚本化,为系统提供最到灵活性。

3. 建造者,桥接,组合,外观,享元,责任链,命令,迭代器,中介者,备忘录,观察者,状态,策略,访问者都是在讨论组合。

首先,程序里有数据和方法,或者有一个大类里,有很多方法和数据,一回事。这些东西要根据规则拆分成小类,才能利用实现模块化管理和进化。

其一,根据规模或进化速度拆分,进化速度不同的原有类的组成部分,分出无继承关系若干类,组合起来共同完成某功能。

比如,建造者,属于构造函数体量比较大,策略模式,属于部分方法有更多的变化,享元,干脆是把固定的部分和可变的部分分离开,节省资源。访问者,属于把变化较多的部分提取出来独立进化。

其二, 根据功能进行拆分,达到一些特殊的设计需求,或实现单一职责。当然,分离出来的职责方发育的比较大,职责比较多,也是重要指标。

观察者,观察者与被观察者之间有着不同的需求走向,状态模式,封装状态相关的方法,省略分支语句。命令模式,封装方法的调用。迭代器模式,封装类的数据访问。备忘录模式,封装类的整体context,提供恢复支持。
 其三,拆分后会有关系问题。

桥接,直接调用,组合,方便管理,责任链,实现处理流程管线化。中介者模式,使类的关系松耦合。外观模式,把调用方的操作集成化。

4.继承树相关

模板方法,定义框架,子类实现功能。

代理模式,由代理决定使用哪个子类。

装饰器模式,通过继承在调用前后增加一些操作。

适配器实际上是一种广义的继承,应在是场景调用时配合使用的。

前述所有对象 类都可以替换为程序,程序集,进程。

时间: 2024-10-28 06:30:56

设计模式心得的相关文章

设计模式-心得

如何解耦:将复杂耦合对象 A  在逻辑上分成a1.a2两部分,将a2独立成类,并抽象化(接口化)(顶层接口名称为Interface_a2),再创建Client(可由平台充当)将a1与Interface_a2组装起来.总结过程:分拆.抽象.组装 组装的过程:可以是代码组装.xml配置组装.Spring等容器组装 原文地址:https://www.cnblogs.com/jiangtao1218/p/9653014.html

(一)设计模式之PHP项目应用(简介)

1 设计模式简介 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于己于他人于系统都是多赢的:设计模式使代码编制真正工程化:设计模式是软件工程的基石脉络,如同大厦的结构一样. 2 <设计模式之PHP项目应用>写作背景 CleverCode编程也有一段时间了,也有一些编程的心得与体会,想与大家一起交流与探讨. 大学的时候研究了一些算法,但是发现这些

设计模式学习心得----开篇

做了几年的开发工作,还停留在开发工程师的阶段,想着不能一直这样下去,觉得要为自己以后做打算了,开发常规两条路:项目管理,架构师,我选择架构师.之 所以这样选,这是保守的一个选择,用格力的广告“掌握核心科技”,只有掌握了核心技术,核心业务,才能占据主导角色.当然要成为一个合格的架构师,需要学 习的,掌握的东西要非常多,非常全面,也有很多条件,但这是我选架构师的一个最重要条件.既然已经决定了,就要学习自己欠缺的.设计模式就是之一,于是有 了这系列文章,记录学习过程中一些心得和总结. 一:为什么要用设

小话设计模式之设计心得

经常看到各个论坛经常有人讨论设计模式,进去一看,基本都是造搬一些设计模式书上的例子.看完之后,往往有一个疑问,他们写完之后在实际工作到底能不能用上呢? 今天闲着无聊,说说自己工作上使用过的心得.欢迎拍砖! 首先,设计模式到底是什么东西? (本来想留最后写,写完发现不知道怎么写了,就不写了) 使用设计模式到底为了什么? (本来想留最后写,写完发现不知道怎么写了,就不写了) 怎么把设计模式应用到工作中去? 这个我觉得最重要的,犹想当年刚开始学习设计模式时,把一本几百页的书看完,里面提到的30左右个设

单例设计模式的一点心得

解决的问题:保证内存中只有一个对像(比如多个程序使用同一个配置信息); 如 何 实现: 1.        不允许其它程序用new 创建该类对象 2.        在该类创建一个本类实例 3.        对外提值一个方法让其它程序获取该对象 步骤:        1.        私有化该类构造函数: 2.        通过new在本类中创建一个静态本类对象 3.        定义一个公有的.静态的方法,将创建的对象返回(一般为getInstance()) 饿汉式(开发时使用):  

C#模板设计模式使用和学习心得

模板设计模式: 模版方法模式由一个抽象类和一个(或一组)实现类通过继承结构组成,抽象类中的方法分为三种: 抽象方法:父类中只声明但不加以实现,而是定义好规范,然后由它的子类去实现. 模版方法:由抽象类声明并加以实现.一般来说,模版方法调用抽象方法来完成主要的逻辑功能,并且,模版方法大多会定义为final类型,指明主要的逻辑功能在子类中不能被重写. 钩子方法:由抽象类声明并加以实现.但是子类可以去扩展,子类可以通过扩展钩子方法来影响模版方法的逻辑. 抽象类的任务是搭建逻辑的框架,通常由经验丰富的人

朱晔的互联网架构实践心得S1E7:三十种架构设计模式(上)

朱晔的互联网架构实践心得S1E7:三十种架构设计模式(上) [下载本文PDF进行阅读] 设计模式是前人通过大量的实践总结出来的一些经验总结和最佳实践.在经过多年的软件开发实践之后,回过头来去看23种设计模式你会发现很多平时写代码的套路和OO的套路和设计模式里总结的类似,这也说明了你悟到的东西和别人悟到的一样,经过大量实践总能趋向性得出一些最佳实践的结论.架构设计也是一样,这里结合自己的理解分析一下微软给出的云架构的一些模式.话说微软干这方面的事情真的很厉害,之前翻译过的<微软应用架构指南>写的

大话设计模式学习心得

我的理解是建立在C++上的,而书中所用的例子是java的,每一种模式我都会转化为C++中的应用来理解. 1.简单工厂模式: 我的理解是父类定义接口,子类实现接口,外加一个根据输入产生不同子类的函数.如果需要添加新实现时,需要添加子类,和修改工厂函数. 2.策略模式: 简单一点的理解是将工厂函数和父类定义在一个新的类中,那么客户端的代码就会显得简洁一些.比较重要的一点是接口和客户端的耦合度降低了.两个类改为一个类. 3.单一职责原则: 还是耦合度的问题,如果太多的功能集中在一个类中,成员变量数量的

java常用设计模式学习心得

学习自:http://shenzhenchufa.blog.51cto.com/730213/161581 代码来自:http://shenzhenchufa.blog.51cto.com/730213/161581 感谢博主:shenzhenchufa. 学习之余我写一些自己的心得.无心侵犯版权,用于自己学习. ------------------------- strategy(策略模式) -------------------------我们有一个设计原则:找出应用中相同之处,且不容易发生