老生常谈的问题,网上一搜一大把,但是不写下来,依然经常出现理解上的偏差,包括在实际的开发使用中,一些模式经常写串,因此将个人的一些理解写下来,争取做到言简意赅,能一句话总结的,绝不啰嗦第二句。

先上一个设计模式的整体分类图

设计模式:代理模式,适配器模式,装饰模式,门面模式,策略工厂的区别

创造型模式主要解决类的实例化过程。

结构型模式主要解决类和方法的组合问题。

 行为型模式主要解决类的交互、职责问题。

 

1,代理模式

UML实例图:

设计模式:代理模式,适配器模式,装饰模式,门面模式,策略工厂的区别

代理模式的关键点在于封装,代理封装了单个功能类的实现,减少系统之间的强耦合,最常见的例子是RPC调用。

 

2,适配器模式

设计模式:代理模式,适配器模式,装饰模式,门面模式,策略工厂的区别

适配器的关键点在于转换,适配层封装了从一种格式到另外一种格式的转换逻辑。

 

3,装饰模式

设计模式:代理模式,适配器模式,装饰模式,门面模式,策略工厂的区别

装饰模式关键点在于功能扩展,在保证核心逻辑不变的情况下,动态添加一些扩展属性。

 

4,门面模式

设计模式:代理模式,适配器模式,装饰模式,门面模式,策略工厂的区别

门面模式的关键点在于聚合,门面封装了对多个子系统的聚合访问控制。

 

5,策略工厂

UML图实例:

设计模式:代理模式,适配器模式,装饰模式,门面模式,策略工厂的区别

策略工厂代表多个相似策略的聚合,通过统一的接口,封装了多个接口的变化。

 

常用对比一栏:

代理 VS 适配:

相同点:封装了一个类。

区别:代理封装了一个类的访问控制,适配转换类的以适配其他接口

 

适配 VS 装饰

相同点:都扩展了类的功能。

区别:适配模式转换之后,核心类发生了变化,装饰模式核心类不变,是主功能的扩展。

 

适配VS门面

共同点:转换了类的输出格式

区别:适配仅针对一个类的转换,门面模式是针对多个类的聚合。

 

门面VS策略工厂

共同点:封装了多个类的实现

区别:策略工厂是针对同一接口(算法)的封装,门面是针对多个接口的封装。

 

参考:https://design-patterns.readthedocs.io/zh_CN/latest/index.html 

相关文章:

  • 2021-10-09
  • 2022-01-03
  • 2022-01-20
  • 2021-05-26
  • 2021-10-22
  • 2021-11-04
  • 2022-12-23
猜你喜欢
  • 2022-01-24
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-18
  • 2021-12-10
  • 2021-09-21
相关资源
相似解决方案