黑马程序员技术交流社区

标题: 装饰模式与动态代理的区别 [打印本页]

作者: 胡军喜    时间: 2012-3-1 14:30
标题: 装饰模式与动态代理的区别
大家都知道装饰模式是对一个类进行增强,比如一个类有一个方法printHellow(),可以在printHellow()方法内部代码块前后增加代码,算出方法执行的时间,而动态代理也可以实现这种功能,请问,这两个有什么大的区别啊?
作者: 段玉超    时间: 2012-3-1 16:02
有些时候 模式之间可以相互替代(《按照设计模式》中的话说就是相互竞争的)比如说
state模式跟 策略模式 ,使用什么,至于是什么模式要看目的,或者说动机,模式的命名,体现了模式的意图和动机,如果两个模式都可以的话,应该考虑使用该模式的动机。如果是为了增强功能,按照装饰着起名,如果是为了控制访问 就使用代理命名 ,原则上,装饰者模式是对为了实现在运行时对对象的包装或者增加功能,而代理则是为了为其它的物件提供一种代理,以控制对这个物件的访问。
作者: 黑马11期李项京    时间: 2012-5-26 16:59
网上有很多讲述装饰器模式和代理模式之间的差别的。装饰器模式关注于在一个对象上动态的添加方法,然而代理模式关注于控制对对象的访问。换句话 说,用代理模式,代理类(proxy class)可以对它的客户隐藏一个对象的具体信息。因此,当使用代理模式的时候,我们常常在一个代理类中创建一个对象的实例。并且,当我们使用装饰器模 式的时候,我们通常的做法是将原始对象作为一个参数传给装饰者的构造器。http://www.cnblogs.com/jaredlam/archive/2011/11/08/2241089.html
不过本人也不太懂这个,互勉




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