A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© a6511631 高级黑马   /  2014-8-11 11:27  /  1885 人查看  /  6 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 a6511631 于 2014-8-11 17:49 编辑

个人对这两者的认知是:装饰类通常会通过构造方法接收被装饰的对象。并基于被装饰的对象的功能,提供更强的功能。
代理类嘛,对一个类进行代理,是实现AOP的技术关键,通过它可以给被代理类的方法添油加醋,可以在被调用类的方法前后各种姿势添加功能。
写博客的时候突然发现这两个挺像的,它们有什么相似之处没有啊?求大神来总结下这两者的异同,求指正求打脸。

评分

参与人数 1技术分 +1 收起 理由
格子、 + 1 淡定

查看全部评分

6 个回复

倒序浏览
回复 使用道具 举报
代理类就是为其他对象提供一个代理来控制对一个对象的访问,在代理的内部除了调用了真实角色的方法外还可以加入其他的功能实现对真实角色的扩展,而装饰类是不产生更多子类的情况下对一个类进行装饰,实现功能扩展。相同点应该是都能实现功能扩展。但是区别在于代理类的产生控制了对象的访问,只有经过代理允许才能对真实类直接访问,也就是说基本一般情况下看不到真实类的,而被装饰的类却是一直对访问的对象公开透明,对于访问对象来说,被装饰的类中目标方法才是最重要的,装饰再多,对于想要访问这个方法的对象来说看到还只是这个目标方法而已。举个例子来说代理商卖电脑,都是弄一个大礼包打包卖给你的这是代理,你不需要知道电脑多少钱,你只需要知道大礼包多少钱就好了,而装饰类是我只想知道电脑多少钱,其他的有没有无所谓,弄再多东西我只是想要电脑而已。
这只是我的理解,仅供参考{:2_32:}话说码了这么多字真有点累。。。

评分

参与人数 2技术分 +1 黑马币 +1 收起 理由
格子、 + 1 赞一个!
a6511631 + 1 赞一个!辛苦了

查看全部评分

回复 使用道具 举报
fantacyleo 发表于 2014-8-11 11:29
http://bbs.itheima.com/forum.php?mod=viewthread&tid=134904&page=1#pid898087

soga!哥们42期?
回复 使用道具 举报

自荐信都没交的不知道多少期。。。
回复 使用道具 举报
你没发现,代理就是装饰模式的应用吗?
回复 使用道具 举报
http://www.cnblogs.com/jaredlam/archive/2011/11/08/2241089.html
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马