大话设计模式学习心得

我的理解是建立在C++上的,而书中所用的例子是java的,每一种模式我都会转化为C++中的应用来理解。

1.简单工厂模式:

  我的理解是父类定义接口,子类实现接口,外加一个根据输入产生不同子类的函数。如果需要添加新实现时,需要添加子类,和修改工厂函数。

2.策略模式:

  简单一点的理解是将工厂函数和父类定义在一个新的类中,那么客户端的代码就会显得简洁一些。比较重要的一点是接口和客户端的耦合度降低了。两个类改为一个类。

3.单一职责原则:

  还是耦合度的问题,如果太多的功能集中在一个类中,成员变量数量的上升和变动,会让类显得复杂,耦合度太高,不利于维护。仅有一个动机会让你去改变一个类。

4.开放封闭原则:

  当有新的需求来到时,可以添加新的功能,但不改变原有的代码。

5.依赖倒转原则:
  针对接口编写代码。

6.装饰模式:
  子类继承父类,重写父类接口,并且有一个指向父类的指针。每个子类在该接口中有自己的操作,并且通过父类指针调用父类接口。注意:子类中需添加一个函数,将成员变量指向父类的指针指向新的子类。在客户端,创建多个子类,按照需求,调用子类的函数使得指向父类的指针层层迭代,当最后一个子类调用重写的接口时,便依次调用了各子类功能。这个模式我觉得可以和单一职责结合,每个子类只负责自己的功能,但在客户端实现具体的功能组合。

7.代理模式:

  这个模式我的理解是写两个子类,一个子类A实现父类定义的接口,一个子类B包含一个指向子类的指针,同时也实现父类接口,该实现一般会调用A的接口。在客户端使用的是子类B。这样看不到一点好处,这个直接使用类A毫无区别。在我学习unix文件系统时 ,有一个类似(unix是C写的,但设计模式无关什么语言)的例子,文件表的作用,即使两个进程打开的是同一个文件,在文件表中会有两个槽,为什么呢,我觉得就和代理模式的一个应用相同,就是权限的控制。其他三种应用我还没有应用过,一个是虚代理,比较近的是打开一个文档时,文档已经打开很久了,但浏览到某些图片时还是需要等待,这就是一个代理的应用,在需要时才调用实际类的接口,有些类似于权限控制,第二个是智能指引,这个我觉得还是用文件表的例子理解,当文件表中的某个槽引用计数为0时,既可以将该槽再次使用。最后一种是远程代理,也是我比较不能理解的,复制一份原对象?

8.工厂方法模式:

  相对工厂模式,工厂模式是在一个子类生成函数中生成具体对象,而工厂方法模式是把子类生成函数拆分,每个工厂子类生成一种具体的对象,说实话我觉得没什么好处。

9.原型模式:

  我觉得在C++中就是拷贝构造函数。

10.模版方法模式:

  代码的复用,尽可能把子类中相同的实现放在父类中,而子类仅实现不同的部分。而这也是为什么要有子类和父类的原因。代码越少,越清晰。  

时间: 2024-10-05 14:39:07

大话设计模式学习心得的相关文章

大话设计模式学习心得2

1.迪米特法则 类之间的联系越少越好, 2.外观模式 添加一个新的类,包含子类,实现不同的组合,降低与外界的耦合,对旧代码的更新可以适用. 3.建造者模式 和外观模式有些类似吧,实现子类的各种不同的组合,也就是在内部实现接口调用顺序,而在外界只需调用具体的接口. 4.观察者模式 一个类A是观察者类,另一个类B是通知者类,B中调用A的接口,A中有B的通知号,其实耦合度还是很高的,只是有一个事件来到时,B主动调用注册在A中的方法.相当于实现了通知

大话设计模式学习笔记——面向对象基础

前言 好记性不如烂"笔头"系列--大话设计模式学习笔记 目录 面向对象基础 面向对象基础 什么是类与实例 一切事物皆为对象,即所有的东西老师对象,对象就是可以看到.感觉到.听到.触摸到.尝到.或闻到的东西.准确地说,对象是一个自包含的实体,用一组可识别的特性和行为来标识.面向对象编程,英文叫 Object-Oriented Programming,其实就是针对对象来进行编程的意思.类就是具有相同属性和功能的对象的抽象集合.实例就是一个真实的对象.比如我们属于'人'类,而个人就是'人'类

大话设计模式学习笔记

大话设计模式笔记 1. 使用简单工厂模式(使用反射可以解决避免分支判断问题) 注重创建不同的对象 2. 使用策略模式处理 不同的时间应用不同的业务规则 3. 单一原则:一个类仅有一个变化的原因  发现职责并把职责分离 4. 开放-封闭原则:软件实体可以扩展但不能修改  对扩展开放 对更改封闭 开发人员对程序中呈频繁变化的那部分做出抽象 5. 依赖倒转原则: A.高层模块不应依赖底层模块.两者都应该依赖抽象. B.抽象不应该依赖细节,细节应该依赖于抽象.即针对接口编程, 不应针对实现编程. 里氏替

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

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

C#大话设计模式学习总结

如有雷同,不胜荣欣,如转载,请注明 一.工厂模式 面向对象的三个特性:封装,继承和多态 1.封装 Class Operate { privatedouble _numberA; privatedouble _numberB; publicdouble NumberA { get{return_numberA;} set{_numberA= value;} } publicdouble _numberB { get{return_numberB;} set{_numberB= value;} }

[大话设计模式]学习笔记——简单工厂模式

序 说好的每天进步一点点的,结果工作太忙,一直在加班,都没有学习新东西.我还要进BAT呢. 坚持每天学习新东西. 写代码时,意识到在代码结构上还是有点欠缺.赶紧补上. 纪录对设计模式的认识.小菜变大鸟.进攻BAT. 应用场景: 编写一个计算器控制台程序,要求输入两个数和运算符号,得到结果. 这本书使用C#写的.已有博主用JAVA写出来,参考:http://blog.csdn.net/ghsau/article/details/8163418 常见的做法: 写一个方法封装计算机的功能,我们只需传参

java常用设计模式学习心得

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

设计模式学习心得(持续更新)

本博文仅仅是笔者自己的学习路线,归纳整理了一些好的设计模式资料. 1.策略模式 参考资料:c#设计模式-策略模式?c#设计模式之策略模式 ?C#设计模式(20)--策略者模式(Stragety Pattern) 策略模式的实现有解耦的表现--Context类 注意: 如果优化的话,可以使用抽象类,将变化的算法设为抽象方法,或虚方法,这样让子类对该方法进行实现即可,同样可以实现该需求,而且代码重用性应该会更好 2.工厂模式 参考资料:C#设计模式(3)--工厂方法模式 ?C#设计模式(1)--简单

设计模式学习心得<适配器 Adapter>

适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁.这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能. 这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能. 概述 意图 将一个类的接口转换成客户希望的另外一个接口. 适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 主要解决 主要解决在软件系统中,常常要将一些"现存的对象"放到新的环境中,而新环境要求的接口是现对象不能满足的. 何时使用 系统需要使用现有的类,而此类