黑马程序员技术交流社区

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

作者: a6511631    时间: 2014-8-11 11:27
标题: 装饰类和代理类的区别
本帖最后由 a6511631 于 2014-8-11 17:49 编辑

个人对这两者的认知是:装饰类通常会通过构造方法接收被装饰的对象。并基于被装饰的对象的功能,提供更强的功能。
代理类嘛,对一个类进行代理,是实现AOP的技术关键,通过它可以给被代理类的方法添油加醋,可以在被调用类的方法前后各种姿势添加功能。
写博客的时候突然发现这两个挺像的,它们有什么相似之处没有啊?求大神来总结下这两者的异同,求指正求打脸。
作者: fantacyleo    时间: 2014-8-11 11:29
http://bbs.itheima.com/forum.php ... mp;page=1#pid898087
作者: 月影箫风起k    时间: 2014-8-11 11:45
代理类就是为其他对象提供一个代理来控制对一个对象的访问,在代理的内部除了调用了真实角色的方法外还可以加入其他的功能实现对真实角色的扩展,而装饰类是不产生更多子类的情况下对一个类进行装饰,实现功能扩展。相同点应该是都能实现功能扩展。但是区别在于代理类的产生控制了对象的访问,只有经过代理允许才能对真实类直接访问,也就是说基本一般情况下看不到真实类的,而被装饰的类却是一直对访问的对象公开透明,对于访问对象来说,被装饰的类中目标方法才是最重要的,装饰再多,对于想要访问这个方法的对象来说看到还只是这个目标方法而已。举个例子来说代理商卖电脑,都是弄一个大礼包打包卖给你的这是代理,你不需要知道电脑多少钱,你只需要知道大礼包多少钱就好了,而装饰类是我只想知道电脑多少钱,其他的有没有无所谓,弄再多东西我只是想要电脑而已。
这只是我的理解,仅供参考{:2_32:}话说码了这么多字真有点累。。。
作者: a6511631    时间: 2014-8-11 17:48
fantacyleo 发表于 2014-8-11 11:29
http://bbs.itheima.com/forum.php?mod=viewthread&tid=134904&page=1#pid898087

soga!哥们42期?
作者: fantacyleo    时间: 2014-8-11 17:59
a6511631 发表于 2014-8-11 17:48
soga!哥们42期?

自荐信都没交的不知道多少期。。。
作者: justin1258    时间: 2014-8-11 18:06
你没发现,代理就是装饰模式的应用吗?
作者: crxc3237    时间: 2016-10-21 00:20
http://www.cnblogs.com/jaredlam/archive/2011/11/08/2241089.html




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