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