菜鸟教程链接:代理模式
概念
代理模式在java中的应用非常常见,spring中就大量运用到了各种动态代理与静态代理模式,它和装饰者模式非常类似,都是通过创建包含现有的对象的类实例去访问现有对象的方法,使不兼容或者访问及其复杂的方法可以通过代理类简便访问。它与装饰者模式的区别主要在于装饰者模式重点想要扩展原有方法的功能,而代理模式主要侧重于提供对象访问的通道。
优缺点
优点:
简便被代理类的使用,扩展性高。
缺点:
实现逻辑可能会复杂,会降低被代理接口的访问速度。
适用场景
需要代理的场景,如远程代理,防火墙代理等。
示例代码
public class ProxyImage implements Image{
private RealImage realImage;
private String fileName;
public ProxyImage(String fileName){
this.fileName = fileName;
}
@Override
public void display() {
if(realImage == null){
realImage = new RealImage(fileName);
}
realImage.display();
}
}