设计模式&设计原则

设计模式分类

创建型模式

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

结构型模式

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

行为型模式

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

设计模式的六大原则

  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. 访问者模式

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

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值