理解外观模式,装饰者模式

1. 外观模式

也叫面门模式。

1.1. PROS

  • 在客户端与子系统之间实现解耦。
  • 简化调用过程,客户端无需关系子系统细节,符合迪米特原则。

1.2. CONS

  • 不符合开闭原则
  • 扩展新的子系统时存在风险

1.3. 区别

中介者模式关心子系统间的交互,而外观模式关心客户端与子系统之间的交互。

1.4. 源码案例

  • Spring#JdbcUtils
  • Mybatis#Configuration
  • tomcat#RequestFacade

2. 装饰者模式

用途:扩展一个类的功能。支持动态添加功能,动态撤销功能。

2.1. PROS

  • 比继承更加灵活
  • 装饰类之间支持排列祝贺
  • 符合开闭原则

2.2. CONS

  • 提升程序的复杂性

2.3. 区别

代理模式关心控制访问类的权限,而装饰者模式关系增强类地行为。

装饰者模式和适配器模式都可以叫包装模式Wrapper,但它们两个关心点不同,适配器模式关心接口之间的转换。

2.4. 装饰者是否需要为抽象类?

当业务要求子类必须实现抽象父类(装饰者)的某些抽象方法时,装饰者就需要是抽象类。

2.5. 源码案例

  • FilterInputStream
  • Spring#TransactionAwareCacheDecorator
  • HttpServletRequestWrapper
  • Mybatis#Cache

你可能感兴趣的:(理解外观模式,装饰者模式)