黑马程序员技术交流社区

标题: 装饰类和java代理的区别与联系 [打印本页]

作者: ccyznhy    时间: 2013-8-22 22:53
标题: 装饰类和java代理的区别与联系
本帖最后由 黄兴旺 于 2013-8-23 16:52 编辑

球各路大虾指点

作者: 一个铃,一颗珠    时间: 2013-8-22 23:35
装饰模式:以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案;
代理模式:给一个对象提供一个代理对象,并有代理对象来控制对原有对象的引用;


装饰模式应该为所装饰的对象增强功能;代理模式对代理的对象施加控制,并不提供对象本身的增强功能

二者的实现机制确实是一样的,可以看到他们的实例代码重复是很多的。但就语义上说,这两者的功能是相反的,模式的一个重要作用是简化其他程序员对你程序的理解,


作者: 黑马-文鸿利    时间: 2013-8-23 07:39
装饰模式:以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案;
代理模式:给一个对象提供一个代理对象,并有代理对象来控制对原有对象的引用;


装饰模式应该为所装饰的对象增强功能;代理模式对代理的对象施加控制,并不提供对象本身的增强功能

二者的实现机制确实是一样的,可以看到他们的实例代码重复是很多的。但就语义上说,这两者的功能是相反的,模式的一个重要作用是简化其他程序员对你程序的理解,

你在一个地方写装饰,大家就知道这是在增加功能,你写代理,大家就知道是在限制,

虽然代码很可能相同,但如果你都叫他们装饰,别人会很迷惑的。
作者: 黄兴旺    时间: 2013-8-23 16:51
亲  如果问题已解决请把类别改为已解决,谢谢。
作者: ccyznhy    时间: 2013-8-23 17:24
黄兴旺 发表于 2013-8-23 16:51
亲  如果问题已解决请把类别改为已解决,谢谢。

亲怎么改不会改,我一直想改呢,亲亲亲亲亲亲亲亲。。。

作者: ccyznhy    时间: 2013-8-23 17:25
黑马-文鸿利 发表于 2013-8-23 07:39
装饰模式:以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案;
代理模式:给一个对象提供一 ...

高端回答,和我哥们说的基本一样,真心高手,多谢!





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2