# 【设计模式】总结 作者: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)手中无剑,心中有剑:忘掉模式,只有原则