代理模式
定义
为其他对象提供一种代理以控制对这个对象的访问。代理模式(Proxy Pattern
)是GoF 23
种Java
常用设计模式之一。代理模式的定义:Provide a surrogate or placeholder for another object to controlaccess to it
(为其他对象提供一种代理以控制对这个对象的访问)。使用代理模式创建代理对象,让 代理对象控制目标对象的访问(目标对象可以是远程的对象、创建开销大的对象或需要安全控制的对象),并且可以在不改变目标对象的情况下添加一些额外的功能。
UML类图
实例
代理模式和装饰者模式的区别
定义上区别
装饰模式:以对 客户端透明(客户端需要指明装饰的是哪个类)的方式 扩展对象的功能,是继承关系的一个替代方案; 代理模式:给一个对象提供一个代理对象,客户端是不 透明的(客户端不需要指定代理的是那个类,这个关系式在编译达时候确定了的),并有代理对象来控制对原有对象的引用);
代码上区别
参考:装饰者模式
public void operaion() { RealSubject realSubject = new RealSubject(); //AOP System.out.println("begin realsubject"); realSubject.operaion();; System.out.println("end realSubject"); }
//装饰者模式,在装饰者模式中,客户端需要指明装饰的是哪一个对象, //去给这个对象进行增加功能
public Component component; public ConcreteDecorator(Component component){ this.component = component; } public void operation() { component.operation(); System.out.println(this.getClass().getName()+":operat"); }