大话设计模式笔记
来源:互联网 发布:net域名续费多少钱 编辑:程序博客网 时间:2024/04/29 06:50
第1章 代码无错就是优?——简单工厂模式
1、三大特性是:封装,继承,多态
所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。封装是面向对象的特征之一,是对象和类概念的主要特性。 简单的说,一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。
所谓继承是指可以让某个类型的对象获得另一个类型的对象的属性的方法。它支持按级分类的概念。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。 通过继承创建的新类称为“子类”或“派生类”,被继承的类称为“基类”、“父类”或“超类”。继承的过程,就是从一般到特殊的过程。要实现继承,可以通过“继承”(Inheritance)和“组合”(Composition)来实现。继承概念的实现方式有二类:实现继承与接口继承。实现继承是指直接使用基类的属性和方法而无需额外编码的能力;接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力;
所谓多态就是指一个类实例的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式予以调用。
2、五大基本原则
单一职责原则SRP(Single Responsibility Principle)
是指一个类的功能要单一,不能包罗万象。如同一个人一样,分配的工作不能太多,否则一天到晚虽然忙忙碌碌的,但效率却高不起来。
开放封闭原则OCP(Open-Close Principle)
一个模块在扩展性方面应该是开放的而在更改性方面应该是封闭的。比如:一个网络模块,原来只服务端功能,而现在要加入客户端功能,
那么应当在不用修改服务端功能代码的前提下,就能够增加客户端功能的实现代码,这要求在设计之初,就应当将服务端和客户端分开,公共部分抽象出来。
替换原则(the Liskov Substitution Principle LSP)
子类应当可以替换父类并出现在父类能够出现的任何地方。比如:公司搞年度晚会,所有员工可以参加抽奖,那么不管是老员工还是新员工,也不管是总部员工还是外派员工,都应当可以参加抽奖,否则这公司就不和谐了。
依赖原则(the Dependency Inversion Principle DIP) 具体依赖抽象,上层依赖下层。假设B是较A低的模块,但B需要使用到A的功能,这个时候,B不应当直接使用A中的具体类: 而应当由B定义一抽象接口,并由A来实现这个抽象接口,B只使用这个抽象接口:这样就达到了依赖倒置的目的,B也解除了对A的依赖,反过来是A依赖于B定义的抽象接口。通过上层模块难以避免依赖下层模块,假如B也直接依赖A的实现,那么就可能造成循环依赖。一个常见的问题就是编译A模块时需要直接包含到B模块的cpp文件,而编译B时同样要直接包含到A的cpp文件。
接口分离原则(the Interface Segregation Principle ISP)
模块间要通过抽象接口隔离开,而不是通过具体的类强耦合起来
第2章 商场促销——策略模式
第3章 拍摄UFO——单一职责原则
第4章 考研求职两不误——开放-封闭原则
第5章 会修电脑不会修收音机?——依赖倒转原则
第6章 穿什么有这么重要?——装饰模式
第7章 为别人做嫁衣——代理模式
第8章 雷锋依然在人间——工厂方法模式
第9章 简历复印——原型模式
第10章 考题抄错会做也白搭——模板方法模式
第11章 无熟人难办事?——迪米特法则
第12章 牛市股票还会亏钱?——外观模式
第13章 好菜每回味不同——建造者模式
第14章 老板回来我不知道——观察者模式
第15章
第16章
第17章
第18章
第19章
第20章
- 大话设计模式 笔记
- 《大话设计模式》笔记
- 大话设计模式笔记
- 大话设计模式笔记
- 大话设计模式--笔记
- 大话设计模式-笔记
- <大话设计模式>笔记
- 大话设计模式笔记
- 《大话设计模式》阅读笔记
- 大话设计模式学习笔记
- 大话设计模式学习笔记
- 大话PHP设计模式笔记
- 简单设计模式-《大话设计模式》笔记
- 《大话设计模式》--笔记(单例模式)
- 《大话设计模式》--笔记(桥接模式)
- 《大话设计模式》--笔记(策略模式)
- 大话设计模式----装饰模式笔记
- 大话设计模式笔记----简单工厂模式
- 错误处理(4)—— “{000208D5-0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败
- 将项目中执行的 SQL 打印到 laravel.log 文件中
- windows GDI编程中关于窗口和视口,逻辑坐标和设备坐标的转换
- better-scroll滑动插件的使用
- iOS 原生网络请求
- 大话设计模式笔记
- Android 4.3(API 18)及以下调用 RelativeLayout.mesure() 时出现 NullPointerException 异常
- 欢迎使用CSDN-markdown编辑器
- 如何判断单链表是否存在环
- 蛇形矩阵
- 变量的类型转换
- 每次app打包之前clean一下项目
- c用#define 定义100天有多少毫秒
- 用Python实现——插入排序(两种思想)