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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胡军喜 中级黑马   /  2012-3-1 14:30  /  2738 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

大家都知道装饰模式是对一个类进行增强,比如一个类有一个方法printHellow(),可以在printHellow()方法内部代码块前后增加代码,算出方法执行的时间,而动态代理也可以实现这种功能,请问,这两个有什么大的区别啊?

2 个回复

正序浏览
网上有很多讲述装饰器模式和代理模式之间的差别的。装饰器模式关注于在一个对象上动态的添加方法,然而代理模式关注于控制对对象的访问。换句话 说,用代理模式,代理类(proxy class)可以对它的客户隐藏一个对象的具体信息。因此,当使用代理模式的时候,我们常常在一个代理类中创建一个对象的实例。并且,当我们使用装饰器模 式的时候,我们通常的做法是将原始对象作为一个参数传给装饰者的构造器。http://www.cnblogs.com/jaredlam/archive/2011/11/08/2241089.html
不过本人也不太懂这个,互勉
回复 使用道具 举报
有些时候 模式之间可以相互替代(《按照设计模式》中的话说就是相互竞争的)比如说
state模式跟 策略模式 ,使用什么,至于是什么模式要看目的,或者说动机,模式的命名,体现了模式的意图和动机,如果两个模式都可以的话,应该考虑使用该模式的动机。如果是为了增强功能,按照装饰着起名,如果是为了控制访问 就使用代理命名 ,原则上,装饰者模式是对为了实现在运行时对对象的包装或者增加功能,而代理则是为了为其它的物件提供一种代理,以控制对这个物件的访问。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马