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

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

    推荐阅读