这段时间学习设计模式,觉的这两个模式功能十分的类似,装饰模式是对原对象的功能增强,代理模式是原来对象的一个替身,可是代理模式中这个代理类也可以增强原有类的功能,这不就和装饰模式功能一样了吗,事物存在就有他的道理,所以问题是我认识不深刻,求教各位给予指点!~!~!~!~

解决方案 »

  1.   

    这个限制可不可以也理解为增加功能呢 比如Spring中代理事务管理,理解为对被代理类增加事务管理功能 和理解为被代理类限制它的操作要有事务管理是一样呢,语义相反是什么概念呢 我不理解!~!~!~
      

  2.   

    效果差不多。 不过出发点不一样。  装饰模式:将原有的事物增加新的功能。我觉得对于使用者来说他看到的是装饰后的效果。而使用者并不关系原来的样子。代理模式:用户通过代理来访问目标的功能,使用者关心的是原始功能都有什么功能。举个例子  A类是原始功能的类, B是装饰模式中对A类的扩展之后的类, C是代理模式中对A类的扩展对于用户调用来说。 
    使用装饰模式, 用户更关系的是B的功能(包含A的原始功能)。
    使用代理模式,用户更关心A的功能。并不关系(c的功能)。  以上是本人的理解
      

  3.   

    很多设计模式UML图上看起来都差不多,但是最主要的区别在于他们的意图