简要(真的很简要)介绍一些设计模式的基本原则与设计模式的分类。
设计原则
设计模式的作用
应对变化,提高复用。
实现层
如何用代码实现:
-
封装:隐藏内部实现
-
继承:复用现有代码
-
多态:改写对象行为
原则
一些基本思想:
-
针对接口编程,而不是针对实现编程
-
优先使用对象组合,而不是类继承
-
封装变化点
-
高内聚,低耦合
高层/主模块:抽象的部分
底层/次要模块:细节实现部分
-
单一职责原则 SRP
一个类应该仅有一个引起变化的原因
e.g. File 和 FileInfo -
开放封闭原则 OCP
对扩展开放,对更改封闭 -
Liskov 替换原则 LSP
子类必须能够替换它们的基类( is a) -
依赖倒置原则 DIP
高层模块不应该依赖于低层模块,二者都应该依赖于抽象
抽象不应该依赖于实现细节,实现细节应该依赖于抽象 -
接口隔离原则 ISP
不应该强迫客户程序依赖于它们不用的方法
设计模式分类
按照目的分类
-
创建型 模式
创建型 模式 要解决的问题: new 的问题;
new 的问题: 实现依赖,不能应对“具体实例化类型”的变化。 -
结构型 模式
处理类与对象间的组合(对象与对象之间的耦合关系) -
行为型 模式
类与对象交互中的职责分配(对象与行为操作之间的耦合关系)
行为请求者 与 行为实现者
按照范围分类
-
类模式
处理类与子类的静态关系 -
对象模式
处理对象间的动态关系
具体分类
-
组件协作模式
1 模板方法 Template Method
2 观察者 Observer / Event
3 策略模式 Strategy -
单一职责模式
1 装饰模式 Decorator
2 桥模式 Bridge -
对象创建模式
1 工厂方法 Factory Method
2 抽象工厂 Abstract Factory
3 原型模式 Prototype
4 构建器 Builder -
对象性能模式
1 单例模式 Singleton
2 享元模式 Flyweight -
接口隔离模式
1 外观模式 Facade
2 代理模式 Proxy
3 适配器 Adapter
4 中介者 Mediator -
状态变化模式
1 状态模式 State
2 备忘录 Memento -
数据结构模式
1 组合模式 Composite
2 迭代器 Iterator
3 职责链 Chain of Resposibility -
行为变化模式
1 访问器 Visitor
2 命令 Command -
领域问题
1 解析器 Interpreter