两者的具有很大的相似性,两者的UML类图实现 几乎相同,
- 代理模式

-
装饰模式
772134-20160527202352881-1116372745.png
特点
- 装饰模式
在不改变接口的前提下,动态扩展对象的访问。
动态继承,让类具有在运行期改变行为的能力。
装饰模式,突出的是运行期增加行为,这和继承是不同的,继承是在编译期增加行为。
强调:增强
- 代理模式
在不改变接口的前提下,控制对象的访问。
1.从封装的角度讲,是为了解决类与类之间相互调用而由此导致的耦合关系,可以说是接口的另外一个层引用。
2.从复用的角度讲,可以解决不同类调用一个复杂类时,仅仅因较小的改变而导致整个复杂类新建一个类。
代理模式,是类之间的封装和(某方面的)复用。
强调:限制
比较总结
代理模式中,代理类对被代理的对象有控制权,决定其执行或者不执行。而装饰模式中,装饰类对代理对象没有控制权,只能为其增加一层装饰,以加强被装饰对象的功能,仅此而已
个人理解
网友评论