设计模式总结
-
心得
为什么会出现设计模式?
为了应对需求的频繁变化
设计模式的真谛?
让程序在编译时一样, 将变化转移到运行时.
不要通过修改旧代码, 来支持变化的新需求,
而是通过运行时多态, 来支持变化的新需求.
使用设计模式的核心问题?
确定什么时候什么地方应用设计模式.
答案是,
寻找变化点,
在变化点处应用设计模式.
使用设计模式的前提假设?
软件中存在稳定的点.
如果程序的所有步骤都不稳定?
如果所有的步骤都不稳定,
那所有的设计模式都不适用.
或者所有的步骤都稳定,
那设计模式没有意义.
管理变化
设计模式就是在稳定和变化中寻找隔离点, 从而分离他们, 管理变化.
重构到模式
没有一步到位的设计模式, 敏捷开发提倡"重构到模式".
重构心得
静态绑定-------------------->动态绑定
早绑定---------------------->晚绑定
编译时依赖------------------>运行时依赖
继承------------------------>组合
紧耦合---------------------->松耦合
-
目录
1 组件协作
解决组件之间的协作问题
现代软件的分工特点是"框架与应用"的区分,
组件协作模式, 通过晚绑定,实现框架和应用的松耦合.
- Template Method (模板方法)
- Strategy (策略)
- Observer / Event (观察者/发布订阅模式)
2 单一职责
解决class与class之间的责任划分
- Decorator (装饰)
- Bridge (桥)
3 对象创建
解决object创建过程中的依赖关系
- Factory Method (工厂方法)
- Abstract Factory (抽象工厂)
- Prototype (原型)
- Builder (生成器)
4 对象性能
- Singleton (单例模式)
- Flyweight (享元模式)
5 接口隔离
- Façade (门面模式)
- Proxy (代理模式)
- Mediator (适配器)
- Adapter (中介者)
6 状态变化
- Memento (备忘录模式)
- State (状态模式)
7 数据结构
- Composite (组合模式)
- Iterator (迭代器模式)
- Chain of Resposibility (责任链模式)
8 行为变化
- Command (命令模式)
- Visitor (访问者模式)
9 领域问题
-
Interpreter (解释器模式)
-
目录链接
0 七大原则
-
( 1 ) 开闭原则
https://www.cnblogs.com/crazyctrlc/articles/17779848.html
-
( 2 ) 单一职责原则
https://www.cnblogs.com/crazyctrlc/articles/17771175.html
-
( 3 ) 迪米特原则(最少知识原则) demeter
https://www.cnblogs.com/crazyctrlc/articles/17768432.html
-
( 4 ) 依赖倒置原则 dependency inversion
https://www.cnblogs.com/crazyctrlc/articles/17766492.html
-
( 5 ) 合成复用原则 composite reuse
https://www.cnblogs.com/crazyctrlc/articles/17768780.html
-
( 6 ) 接口隔离原则 interface segregation
https://www.cnblogs.com/crazyctrlc/articles/17768789.html
-
( 7 ) 里氏替换原则 liskov substitution
https://www.cnblogs.com/crazyctrlc/articles/17768792.html
1 组件协作
-
Template Method (模板方法)
https://www.cnblogs.com/crazyctrlc/articles/17759308.html
-
Strategy (策略模式)
https://www.cnblogs.com/crazyctrlc/articles/17759555.html
-
Observer / Event (观察者模式/发布订阅模式)
https://www.cnblogs.com/crazyctrlc/articles/17759856.html
2 单一职责
-
Decorator (装饰)
https://www.cnblogs.com/crazyctrlc/articles/17762183.html
-
Bridge (桥)
https://www.cnblogs.com/crazyctrlc/articles/17763467.html
3 对象创建
-
Factory Method (工厂方法)
https://www.cnblogs.com/crazyctrlc/articles/17783823.html
-
Abstract Factory (抽象工厂)
https://www.cnblogs.com/crazyctrlc/articles/17783846.html
-
Prototype (原型)
https://www.cnblogs.com/crazyctrlc/articles/17786424.html
-
Builder (生成器)
https://www.cnblogs.com/crazyctrlc/articles/17786914.html
4 对象性能
-
Singleton (单例模式)
https://www.cnblogs.com/crazyctrlc/articles/17855118.html
-
Flyweight (享元模式)
https://www.cnblogs.com/crazyctrlc/articles/17855134.html
5 接口隔离
-
Façade (门面模式)
https://www.cnblogs.com/crazyctrlc/articles/17856496.html
-
Proxy (代理模式)
https://www.cnblogs.com/crazyctrlc/articles/17856497.html
-
Mediator (适配器)
https://www.cnblogs.com/crazyctrlc/articles/17856499.html
-
Adapter (中介者)
https://www.cnblogs.com/crazyctrlc/articles/17856501.html
6 状态变化
-
Memento (备忘录模式)
https://www.cnblogs.com/crazyctrlc/articles/17871336.html
-
State (状态模式)
https://www.cnblogs.com/crazyctrlc/articles/17871337.html
7 数据结构
-
Composite (组合模式)
https://www.cnblogs.com/crazyctrlc/articles/17875990.html
-
Iterator (迭代器模式)
https://www.cnblogs.com/crazyctrlc/articles/17875994.html
-
Chain of Resposibility (责任链模式)
https://www.cnblogs.com/crazyctrlc/articles/17875999.html
8 行为变化
-
Command (命令模式)
https://www.cnblogs.com/crazyctrlc/articles/17889395.html
-
Visitor (访问者模式)
https://www.cnblogs.com/crazyctrlc/articles/17889397.html
9 领域问题
-
Interpreter (解释器模式)
浙公网安备 33010602011771号