DESIGN-PATTERN
Intro #
设计模式,即Design Patterns,是指在软件设计中,被反复使用的一种代码设计经验。使用设计模式的目的是为了可重用代码,提高代码的可扩展性和可维护性。
设计模式这个术语是上个世纪90年代由Erich Gamma、Richard Helm、Raplh Johnson和Jonhn Vlissides四个人总结提炼出来的,并且写了一本Design Patterns的书。这四人也被称为四人帮(GoF)。
设计模式把一些常用的设计思想提炼出一个个模式,然后给每个模式命名,这样在使用的时候更方便交流。GoF把23个常用模式分为创建型模式、结构型模式和行为型模式三类。
为什么要使用设计模式?根本原因还是软件开发要实现可维护、可扩展,就必须尽量复用代码,并且降低代码的耦合度。
设计模式主要是基于OOP编程提炼的,它基于以下几个原则:
name | explain |
---|---|
开闭原则 | 由Bertrand Meyer提出的开闭原则(Open Closed Principle)是指,软件应该对扩展开放,而对修改关闭。这里的意思是在增加新功能的时候,能不改代码就尽量不要改,如果只增加代码就完成了新功能,那是最好的。 |
里氏替换原则 | 里氏替换原则是Barbara Liskov提出的,这是一种面向对象的设计原则,即如果我们调用一个父类的方法可以成功,那么替换成子类调用也应该完全可以运行。 |
标记 | 设计模式原则名称 | 简单定义 |
---|---|---|
OCP | 开闭原则 | 对扩展开放,对修改关闭 |
SRP | 单一职责原则 | 一个类只负责一个功能领域中的相应职责 |
LSP | 里氏代换原则 | 所有引用基类的地方必须能透明地使用其子类的对象 |
DIP | 依赖倒转原则 | 依赖于抽象,不能依赖于具体实现 |
ISP | 接口隔离原则 | 类之间的依赖关系应该建立在最小的接口上 |
CARP | 合成/聚合复用原则 | 尽量使用合成/聚合,而不是通过继承达到复用的目的 |
LOD | 迪米特法则 | 一个软件实体应当尽可能少的与其他实体发生相互作用 |
创建型模式 #
创建型模式关注点是如何创建对象,其核心思想是要把对象的创建和使用相分离,这样使得两者能相对独立地变换。
- 单例:Singleton
- 工厂方法:Factory
- 抽象工厂:Abstract Factory
- 原型:Prototype
- 建造者:Builder
结构性模式 #
结构型模式主要涉及如何组合各种对象以便获得更好、更灵活的结构。虽然面向对象的继承机制提供了最基本的子类扩展父类的功能,但结构型模式不仅仅简单地使用继承,而更多地通过组合与运行期的动态组合来实现更灵活的功能。
- 适配器:Adapter
- 桥接
- 组合
- 装饰器
- 外观
- 享元
- 代理
行为型模式 #
行为型模式主要涉及算法和对象间的职责分配。通过使用对象组合,行为型模式可以描述一组对象应该如何协作来完成一个整体任务。
- 责任链:Chain of responsibility
- 命令
- 解释器
- 迭代器
- 中介
- 备忘录
- 观察者
- 状态
- 策略:Strategy
- 模板方法:Template
- 访问者:Visitor
Reference #
- https://www.runoob.com/design-pattern/design-pattern-tutorial.html
- https://www.liaoxuefeng.com/wiki/1252599548343744/1264742167474528
comments powered by Disqus