目标
管理变化,提高复用!
手段
分解 VS 抽象
六大原则
设计模式六大原则是要比23种设计模式本身更为重要的东西。
- Single Responsibility Principle:单一职责原则
- Open Closed Principle:开闭原则
- Liskov Substitution Principle:里氏替换原则
- Law of Demeter:迪米特法则
- Interface Segregation Principle:接口隔离原则
- Dependence Inversion Principle:依赖倒置原则
重构技法
静态 ➡ 动态
早绑定 ➡ 晚绑定
继承 ➡ 组合
编译时依赖 ➡ 运行时依赖
紧耦合 ➡ 松耦合
从封装变化角度对模式分类
按照 李建忠 老师的教学经验来进行分类
组件协作:
- 策略模式
- 模板方法模式
- 观察者模式
单一职责: - 装饰器模式
- 桥接模式
对象创建: - 工厂方法模式
- 抽象工厂模式
- 原型模式
- 建造者模式(用途少or被替代)
对象性能: - 单例模式
- 享元模式
接口隔离: - 适配器模式
- 代理模式
- 外观模式
- 中介者模式(用途少or被替代)
状态变化: - 备忘录模式
- 状态模式
数据结构: - 组合模式
- 迭代器模式(用途少or被替代)
- 责任链模式(用途少or被替代)
行为变化: - 命令模式(用途少or被替代)
- 访问者模式(用途少or被替代)
领域问题: - 解释器模式(用途少or被替代)
什么时候不用设计模式
- 代码可读性很差
- 需求理解还很浅
- 变化没有显现
- 不是系统的关键依赖点
- 项目没有复用价值时
- 项目将要发布时
总结
- 不要为模式而模式
- 关注抽象类&接口
- 理清变化点和稳定点
- 审视依赖关系
- 要有Framework和Application的区隔思维
- 良好的设计是演化的结果