装饰者模式和代理模式
装饰者模式
- 名称:Decorator
- 分类:结构型模式
- 意图:动态的为目标对象增加功能,比继承class,重写方法更加的灵活,体现了组合复用的原则
- 类图: 装饰者模式
- 关联关系:装饰者将目标对象组合到装饰者对象中,装饰者将请求转发给目标对象,只是会在目标对象处理前后做一些特定处理。装饰者对象不会中断请求
- 优点:
- 不用继承就可以扩展对象的功能,通过组合对象更加灵活的增强功能。
- 每一种装饰类通常只提供一种特定的装饰功能,符合单一职责。
- 缺点:
- 出问题不易调试。如果new BufferedInputStream(new FileInputStream())
- 例子:
- JDK中的I/O类体系结构
- Shiro中的一系列Request对象
代理模式
- 名称:Proxy
- 分类:结构型模式
- 意图:为其他对象提供一种代理来控制对目标对象的访问
- 类图: 代理模式
- 关联关系:代理根据其种类,在适当的时候向RealSubject转发请求(并不是无条件的转发)
- 例子:
- JDK中的RMI
- Spring的AOP实现
网友评论