前言
俗话说,好记性也不如烂笔头,最近开始阅读设计模式这方面的书籍,算是借此开个好头,把一些理解的和不太理解的都写下来。本人工作时间不长,经验、资历各方面也还比较欠缺,但目前来说还是很有决心多看一点好书,做好一些事情的。
去年就入手了好几本设计模式类的书籍,有《大话设计模式》、《设计模式之禅》和《Head First设计模式》,不过直到最近也是一次都没翻开过。前不久决心从《大话设计模式》看起,并开始记录这个设计模式入门。
百科
设计原则
面向对象编程中一般遵循以下几个原则,设计模式就是为了实现这些原则,从而达到了代码复用、提高可维护性的目的:
- 开放封闭原则 (OCP, Open Closed Principle)
- 对扩展开放,对更改封闭
- 里氏替换原则 (LSP, Liskov Substitution Principle)
- 子类型必须能够替换掉它们的父类型
- 依赖倒转原则 (DIP, Dependency Inversion Principle)
- 依赖抽象而不依赖于具体,高层模块不能依赖低层
- 接口隔离原则 (ISP, Interface Segregation Principle)
- 使用多个隔离的接口,比使用单个接口要好,降低类之间的耦合
- 单一职责原则 (SRP, Single Responsiblity Principle)
- 就一个类而言,应该只有一个引起它变化的原因
- 合成/聚合复用原则 (CARP, Composite/Aggregate Reuse Principle)
- 尽量使用合成/聚合,而不是使用类继承
- 最小知识原则,也叫迪米特法则 (PLK, Principle of Least Knowledge)
- 实体应尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立
设计模式
GOF在《Design Patterns: Elements of Reusable Object-Oriented Software》(《设计模式:可复用面向对象软件的基础》)一书中将设计模式划分为三种类型,共计23种:
- 创建型(5种):单例模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式;
- 结构型(7种):适配器模式、装饰器模式、桥接模式、组合模式、外观模式、享元模式、代理模式;
- 行为型(11种):模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、责任链模式、访问者模式。