# 【设计模式】总结
作者:wallace-lai
发布:2024-04-02
更新:2024-04-29
## 一、设计模式的核心目标
设计模式的核心目标是**管理变化,提高复用**,不要为了模式而模式,也不要误用模式。
## 二、应对复杂问题的两种手段
人类应对复杂问题有两种手段,分别是**分解和抽象**。
## 三、八大原则
(1)依赖倒置原则(DIP)
(2)开放封闭原则(OCP)
(3)单一职责原则(SRP)
(4)里氏替换原则(LSP)
(5)接口隔离原则(ISP)
(6)对象组合优于继承
(7)封装变化点
(8)面向接口编程
## 四、重构技法
(1)静态 -> 动态
(2)早绑定 -> 晚绑定
(3)继承 -> 组合
(4)编译时依赖 -> 运行时依赖
(5)紧耦合 -> 松耦合
## 五、模式分类
从封装变化的角度对设计模式进行分类,有以下几种:
(1)组件协作
- Template Method
- Strategy
- Observer / Event
(2)单一职责
- Decorator
- Bridge
(3)对象创建
- Factory Method
- Abstract Factory
- Prototype
- Builder
(4)对象性能
- Singleton
- Flyweight
(5)接口隔离
- Facade
- Proxy
- Mediator
- Adapter
(6)状态变化
- Memento
- State
(7)数据结构
- Composite
- Iterator
- Chain of
- Responsibility
(8)行为变化
- Command
- Visitor
(9)领域问题
- Interpreter
## 六、关注变化点和稳定点
一个软件肯定会有变化点和稳定点,设计模式的用处就是隔离变化点和稳定点。
## 七、什么时候不用设计模式
(1)代码可读性很差时
(2)需求理解还很浅时
(3)变化没有显现时
(4)不是系统的关键依赖点
(5)项目没有复用价值时
(6)项目将要发布时
## 八、经验之谈
(1)不要为模式而模式
(2)关注抽象类与接口
(3)理清变化点和稳定点
(4)审视依赖关系
(5)要有Framework和Application的区隔思维
(6)良好的设计是演化的结果
## 九、设计模式成长之路
(1)手中无剑,心中无剑:见模式而不知
(2)手中有剑,心中无剑:可以识别模式,作为应用开发人员使用模式
(3)手中有剑,心中有剑:作为框架开发人员为应用设计某些模式
(4)手中无剑,心中有剑:忘掉模式,只有原则