装饰者模式与代理模式
来源:互联网 发布:淘宝蚂蚁花呗客服电话 编辑:程序博客网 时间:2024/06/04 18:15
昨天写了代理模式,今天就摘抄一段装饰者模式的对比,这俩实在是太像了。
装饰模式:以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案;
代理模式:给一个对象提供一个代理对象,并有代理对象来控制对原有对象的引用;装饰模式应该为所装饰的对象增强功能;代理模式对代理的对象施加控制,并不提供对象本身的增强功能。
二者的实现机制确实是一样的,可以看到他们的实例代码重复是很多的。但就语义上说,这两者的功能是相反的,模式的一个重要作用是简化其他程序员对你程序的理解。
你在一个地方写装饰,大家就知道这是在增加功能,你写代理,大家就知道是在限制(这里看你对限制怎么理解了)。
虽然代码很可能相同,但如果你都叫他们装饰,别人会很迷惑的。
使用代理模式,代理和真实对象之间的的关系通常在编译时就已经确定了,而装饰者能够在运行时递归地被构造(对象作为参数传人)。
//装饰器模式public class Decorator implements Component{ private Component component; public Decorator(Component component){ this.component = component } public void operation(){ …. component.operation(); …. }}
//装饰器的客户public class Client{ public static void main(String[] args){ //客户指定了装饰者需要装饰的是哪一个类 Component component = new Decorator(new ConcreteComponent()); … }}
AOP是采用代理模式,再利用反射的机制。
装饰器模式的目的是,包装具有相同父类和接口的类.利用组合.然后重写相关的方法。
java.io里面就是装饰器模式的。
- 装饰者模式与代理模式
- 装饰者模式与代理模式
- Java模式之装饰者模式&代理模式 装饰模式与代理模式区别
- 装饰者模式,代理模式与适配器模式的比较
- 设计模式--装饰者模式与代理模式
- 装饰者模式,代理模式与适配器模式的比较
- 装饰者模式&代理模式
- 动态代理与装饰模式
- 代理模式与装饰者模式的区别
- 代理模式与装饰者模式的区别
- Java中装饰者模式与代理模式的使用
- 代理模式与装饰模式的异同
- 代理模式与装饰模式的区别
- 装饰模式与代理模式的区别
- 装饰模式与代理模式的区别
- 装饰模式与代理模式的区别
- 代理模式与装饰模式的区别
- 装饰模式与代理模式的区别
- android 4.0 安装adobe flash player
- Vista/Win7中绕过UAC自启动
- 测试开发备忘录
- MongoDB与内存
- mysql视图学习总结
- 装饰者模式与代理模式
- 问题7解决方案
- Uva 11733 - Airports 最小生成森林..Kruskal
- <meta name="viewport" content="width=device-width,initial-scale=1.0">是含义
- Linux的cat、more、less有什么区别
- C++ - const 与 迭代器(iterator) 使用 详解
- 二维数组小结
- C# 生成条形码的类
- OpenGL ES之Must use a native order direct Buffer解决方案