装饰者模式和代理模式

装饰者模式和代理模式

装饰者模式

  • 名称:Decorator
  • 分类:结构型模式
  • 意图:动态的为目标对象增加功能,比继承class,重写方法更加的灵活,体现了组合复用的原则
  • 类图:
    装饰者模式和代理模式_第1张图片
    装饰者模式
  • 关联关系:装饰者将目标对象组合到装饰者对象中,装饰者将请求转发给目标对象,只是会在目标对象处理前后做一些特定处理。装饰者对象不会中断请求
  • 优点:
    • 不用继承就可以扩展对象的功能,通过组合对象更加灵活的增强功能。
    • 每一种装饰类通常只提供一种特定的装饰功能,符合单一职责。
  • 缺点:
    • 出问题不易调试。如果new BufferedInputStream(new FileInputStream())
  • 例子:
    • JDK中的I/O类体系结构
    • Shiro中的一系列Request对象

代理模式

  • 名称:Proxy
  • 分类:结构型模式
  • 意图:为其他对象提供一种代理来控制对目标对象的访问
  • 类图:
    装饰者模式和代理模式_第2张图片
    代理模式
  • 关联关系:代理根据其种类,在适当的时候向RealSubject转发请求(并不是无条件的转发)
  • 例子:
    • JDK中的RMI
    • Spring的AOP实现

你可能感兴趣的:(装饰者模式和代理模式)