代理模式的作用是为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。静态代理模式中,真实角色必须是事先已经存在的,并将其作为代理对象的内部属性。但实际使用时,一个真实角色必须对应一个代理角色,如果大量使用,就会导致类的急剧膨胀,这就用到动态代理了。动态代理模式下,被代理的对象(真实角色)可以在运行时动态改变,需要控制的接口(代理与真实对象共有的接口)也可以在运行时改变。其实动态代理就是客户通过代理类来调用其他对象的方法。装饰模式是以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。它主要是用来在不创造更多子类的情况下将对象的功能加以扩展。我们可以形象地理解成,动态代理是中介,起着连接客户与商家的作用。装饰对象的类是一个对象的类的子类,不仅拥有父类的功能,还有自己特有的功能。
|