📓 Archive

DESIGN-PATTERN

FGJ: Create:2023/12/07 Update: (2024-10-24)

Intro #

设计模式,即Design Patterns,是指在软件设计中,被反复使用的一种代码设计经验。使用设计模式的目的是为了可重用代码,提高代码的可扩展性和可维护性。
设计模式这个术语是上个世纪90年代由Erich Gamma、Richard Helm、Raplh Johnson和Jonhn Vlissides四个人总结提炼出来的,并且写了一本Design Patterns的书。这四人也被称为四人帮(GoF)。
设计模式把一些常用的设计思想提炼出一个个模式,然后给每个模式命名,这样在使用的时候更方便交流。GoF把23个常用模式分为创建型模式、结构型模式和行为型模式三类。
为什么要使用设计模式?根本原因还是软件开发要实现可维护、可扩展,就必须尽量复用代码,并且降低代码的耦合度。

设计模式主要是基于OOP编程提炼的,它基于以下几个原则:

nameexplain
开闭原则由Bertrand Meyer提出的开闭原则(Open Closed Principle)是指,软件应该对扩展开放,而对修改关闭。这里的意思是在增加新功能的时候,能不改代码就尽量不要改,如果只增加代码就完成了新功能,那是最好的。
里氏替换原则里氏替换原则是Barbara Liskov提出的,这是一种面向对象的设计原则,即如果我们调用一个父类的方法可以成功,那么替换成子类调用也应该完全可以运行。
标记设计模式原则名称简单定义
OCP开闭原则对扩展开放,对修改关闭
SRP单一职责原则一个类只负责一个功能领域中的相应职责
LSP里氏代换原则所有引用基类的地方必须能透明地使用其子类的对象
DIP依赖倒转原则依赖于抽象,不能依赖于具体实现
ISP接口隔离原则类之间的依赖关系应该建立在最小的接口上
CARP合成/聚合复用原则尽量使用合成/聚合,而不是通过继承达到复用的目的
LOD迪米特法则一个软件实体应当尽可能少的与其他实体发生相互作用
  • 创建型模式 #

    创建型模式关注点是如何创建对象,其核心思想是要把对象的创建和使用相分离,这样使得两者能相对独立地变换。

    1. 单例:Singleton
    2. 工厂方法:Factory
    3. 抽象工厂:Abstract Factory
    4. 原型:Prototype
    5. 建造者:Builder
  • 结构性模式 #

    结构型模式主要涉及如何组合各种对象以便获得更好、更灵活的结构。虽然面向对象的继承机制提供了最基本的子类扩展父类的功能,但结构型模式不仅仅简单地使用继承,而更多地通过组合与运行期的动态组合来实现更灵活的功能。

    1. 适配器:Adapter
    2. 桥接
    3. 组合
    4. 装饰器
    5. 外观
    6. 享元
    7. 代理
  • 行为型模式 #

    行为型模式主要涉及算法和对象间的职责分配。通过使用对象组合,行为型模式可以描述一组对象应该如何协作来完成一个整体任务。

    1. 责任链:Chain of responsibility
    2. 命令
    3. 解释器
    4. 迭代器
    5. 中介
    6. 备忘录
    7. 观察者
    8. 状态
    9. 策略:Strategy
    10. 模板方法:Template
    11. 访问者:Visitor

Reference #


comments powered by Disqus