学习了代理模式和装饰模式之后,对这两个的模式的区别产生了混淆,因为两个模式都是对一个类的功能进行扩充,而且服务类和客户类都同时实现了统一个接口。
那么,两者之间有什么区别呢?
通过http://www.cnblogs.com/jaredlam/archive/2011/11/08/2241089.html的文章,总结得知,两种模式最大的不同就在于对于访问的控制,以及类之间关系的确定阶段的不同。
代理模式是在服务类中新建一个被代理类的实例,使用者得不到被代理类的具体信息,也无法访问,类似于中介对客户信息的保密。
两个类的关系在编译阶段就确定了。
装饰模式是在使用过程中,传入需要装饰类的实例,使用者可以访问,控制实例的信息,该对象对使用者来说是可以访问的。
两个类的关系在动态阶段才被确定。
时间: 2024-10-06 07:29:11