参考地址:
一、设计模式是什么
设计模式是软件设计中常见问题的典型解决方案。 它们就像能根据需求进行调整的预制蓝图, 可用于解决代码中反复出现的设计问题。
是解决实际问题的思想,不是固定的方法或库
一般模式的描述通常包含以下部分:
- 意图:简单描述问题和解决方案
- 动机:将进一步解释问题并说明模式会如何提供解决方案
- 结构:展示模式的每个部分和它们之间的关系
熟悉这三点后,我们可以快速定位问题,并找出解决问题的最佳方案。
二、设计模式六大原则
名称 | 定义 | 说明 |
单一职责原则 Single Responsibility Principle | 一个类或方法只负责一项职责 | 将程序或功能进行模块化拆分,降低耦合 |
开闭原则 Open Closed Principle | 对扩展开放,对修改关闭 | 程序进行功能扩展的时候,不能修改原有代码,,应实现一个新功能热插拔的效果 |
里氏替换原则 Liskov Substitution Principle | 任何基类出现的地方,子类一定可以出现 | 是继承复用的基石,只有当子类可以替换掉基类,软件功能不受影响时,基类才能真正被复用,子类也能够在基类的基础上增加新的行为 |
迪米特法则 Law of Demeter | 最少知道原则,使功能模块尽量独立 | 一个类尽量少的与其他类发生相互作用,当一个类发生改变时,对另一个类的影响也越大。 |
接口隔离原则 Interface Segregation Principle | 使用多个隔离的接口,比使用单个接口要好,降低类之间的耦合度 | 降低耦合度,抽象类或抽象方法单独设计,互相隔离 |
依赖倒置原则 Dependence Inversion Principle | 高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。其核心思想是:依赖于抽象。 | 类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原子操作;假如修改类A,会给程序带来不必要的风险。 |
三、设计模式的分类
不同设计模式的复杂程度、 细节层次以及在整个系统中的应用范围等方面各不相同。
最基础的、底层的模式通常被称为惯用技巧。这类模式一般只能在一种编程语言中使用。
最通用的、高层的模式是构架模式。开发者可以在任何编程语言中使用这类模式。与其他模式不同,它们可用于整个应用程序的架构设计。
此外, 所有模式可以根据其意图或目的来分类
- 创建型模式:提供创建对象的机制, 增加已有代码的灵活性和可复用性。
- 结构型模式:介绍如何将对象和类组装成较大的结构, 并同时保持结构的灵活和高效。
- 行为模式:负责对象间的高效沟通和职责委派。
(一) 创建型模式
创建型模式提供了创建对象的机制, 能够提升已有代码的灵 活性和可复用性。
1. 抽象工厂模式(abstract_factory)
2. 单例模式(singleton)
3. 建造者模式(builder)
4. 工厂模式(factory)
5. 惰性评价模式(lazy_evaluation)
6. 对象池模式(pool)
7. 原型模式(prototype)
(二) 结构型模式
结构型模式介绍如何将对象和类组装成较大的结构,并同时保持结构的灵活和高效
1. 适配器模式(adapter)
2. 桥接模式(bridge)
3. 组合模式(composite)
4. 装饰器模式(decorator)
5. 外观模式(facade)
6. 享元模式(flyweight)
7. 前端控制器模式(front_controller)
8. MVC模式(mvc)
9. 代理模式(proxy)
(三) 行为模式
行为模式负责对象间的高效沟通和职责委派