【设计模式】代理模式与装饰器模式的区别
1.什么是代理模式?
代理模式(Proxy Pattern)是指为其他对象提供一种代理,以控制
对这个对象的访问。
代理对象在客户端和目标之前起到了中介作用,代理模式属于结构型设计模式。
使用代理模式主要有两个目的:一是保护目标对象,而是增强目标对象。
代理侧重于对代理点的限制 (或增强)。
装饰器模式(Decorator Pattern)主要对现有的类对象进行包裹和封装,以期望在不改变类对象及其类定义的情况下,为对象添加额外功能。
动态的给一个对象添加一些额外的职责,就增加功能而言,比继承更加灵活。
装饰器模式是一种对象结构型模式。需要注意的是,该过程是通过调用被包裹之后的对象完成功能添加的,而不是直接修改现有对象的行为,相当于增加了中间层。
装饰器模式的目的是,包装具有相同父类和接口的类,利用组合(非继承),然后重写相关的方法。
装饰侧重于对装饰对象的增强 (升级版的对象)。
3.二者区别与常见实例?
区别:
代理模式强调的是:访问控制;
装饰器模式强调的是:装饰组合;
实例:
Spring AOP => 代理模式
Java IO => 装饰器模式