设计模式&设计原则

设计模式分类

创建型模式

  • 工厂方法模式
  • 抽象工厂模式
  • 单例模式
  • 建造者模式
  • 原型模式

结构型模式

  • 适配器模式
  • 装饰器模式
  • 代理模式
  • 外观模式
  • 桥接模式
  • 组合模式
  • 享元模式

行为型模式

  • 策略模式
  • 模板方法模式
  • 观察者模式
  • 迭代子模式
  • 责任链模式
  • 命令模式
  • 备忘录模式
  • 状态模式
  • 访问者模式
  • 中介者模式
  • 解释器模式

设计模式的六大原则

  1. 开闭原则

    • 定义:对扩展开放,对修改关闭。
    • 目标:提高程序的扩展性和维护性。
    • 实现:使用接口和抽象类。
  2. 里氏代换原则

    • 定义:任何基类可以出现的地方,子类一定可以出现。
    • 目标:增强继承复用的有效性和安全性。
    • 实现:确保子类可以替换基类。
  3. 依赖倒转原则

    • 定义:真对接口编程,依赖于抽象而不依赖于具体。
    • 目标:降低依赖性,提高灵活性。
  4. 接口隔离原则

    • 定义:使用多个隔离的接口,比使用单个接口要好。
    • 目标:降低类间的耦合度。
  5. 迪米特法则(最少知道原则)

    • 定义:一个实体应当尽量少地与其他实体发生相互作用。
    • 目标:保持模块间的独立性。
  6. 合成复用原则

    • 定义:尽量使用合成/聚合的方式,而不是使用继承。
    • 目标:提高代码的复用性和灵活性。

创建型模式示例

1. 工厂模式

  • 描述:客户类和工厂类分开,消费者无需修改即可接纳新产品。

2. 建造者模式

  • 描述:将产品的内部表象和产品的生成过程分离,使产品内部表象可以独立变化。

3. 工厂方法模式

  • 描述:核心工厂类不再负责所有产品的创建,而是将具体创建的工作交给子类。

4. 原型模式

  • 描述:通过复制一个原型对象来创建新的对象。

5. 单例模式

  • 描述:确保某一个类只有一个实例,并自行实例化并向整个系统提供这个实例。

结构型模式示例

6. 适配器模式

  • 描述:将一个类的接口转换成另一个接口,使原本因接口不兼容而不能一起工作的类可以一起工作。

7. 桥梁模式

  • 描述:将抽象化与实现化分离,使二者可以独立变化。

8. 组合模式

  • 描述:将对象组织到树形结构中,描述整体与部分的关系。

9. 装饰模式

  • 描述:动态地给一个对象添加一些额外的职责。

10. 外观模式

  • 描述:为子系统提供一个一致的接口,使子系统更易于使用。

11. 享元模式

  • 描述:以共享的方式高效地支持大量细粒度对象。

12. 代理模式

  • 描述:给某一个对象提供一个代理对象,并由代理对象控制对源对象的引用。

行为型模式示例

13. 责任链模式

  • 描述:将多个对象通过引用串连成一条链,请求沿着这条链传递,直到有对象处理它为止。

14. 命令模式

  • 描述:将请求封装成对象,以便使用不同的请求、队列请求或记录请求日志,支持可撤销的操作。

15. 解释器模式

  • 描述:给定一个语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。

16. 迭代子模式

  • 描述:顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。

17. 调停者模式

  • 描述:将一组对象互相作用的方式进行封装,使它们不必显式地相互引用。

18. 备忘录模式

  • 描述:在不破坏封装性的前提下捕获一个对象的内部状态,并在该对象之外保存这个状态。

19. 观察者模式

  • 描述:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

20. 状态模式

  • 描述:允许一个对象在其内部状态改变时改变它的行为。

21. 策略模式

  • 描述:定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。

22. 模板方法模式

  • 描述:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。

23. 访问者模式

  • 描述:封装一些作用于某种数据结构元素之上的操作,使得无需修改数据结构即可定义作用于这些元素的新操作。

相关推荐
丶白泽2 小时前
重修设计模式-结构型-桥接模式
java·设计模式·桥接模式
南郁3 小时前
把设计模式用起来!(3)用不好模式?之时机不对
设计模式
Lill_bin4 小时前
Lua编程语言简介与应用
开发语言·数据库·缓存·设计模式·性能优化·lua
瞅瞅水7 小时前
设计模式中工厂模式的C语言实现
设计模式
SchneeDuan9 小时前
iOS六大设计原则&&设计模式
ios·设计模式·cocoa·设计原则
Book_熬夜!10 小时前
Python基础(十)——闭包、装饰器、设计模式与多线程编程
开发语言·python·设计模式
java_heartLake19 小时前
设计模式之工厂方法模式
java·设计模式·工厂方法模式
我码玄黄1 天前
JS 的行为设计模式:策略、观察者与命令模式
javascript·设计模式·命令模式
会敲代码的小张1 天前
设计模式-观察者模式
java·开发语言·后端·观察者模式·设计模式·代理模式
宗浩多捞1 天前
C++设计模式(更新中)
开发语言·c++·设计模式