Proxy模式

代理模式是一种常用的结构型设计模式,它为目标对象创建一个代理对象,以控制对目标对象的访问。代理对象可以起到以下作用:

  • 延迟加载: 延迟对象的创建,直到真正需要使用时才创建。
  • 缓存: 将对象的副本缓存起来,以提高访问速度。
  • 访问控制: 限制对对象的访问权限。
  • 日志记录: 记录对象的访问和操作日志。

代理模式可以应用于以下场景:

  • 远程代理: 在分布式系统中,可以为远程对象创建代理对象,以减少网络通信开销。
  • 虚拟代理: 在图形界面中,可以为图像创建代理对象,以延迟图像的加载,直到图像真正需要显示时才加载。
  • 保护代理: 可以为敏感对象创建代理对象,以控制对对象的访问权限。
  • 缓存代理: 可以为经常访问的对象创建代理对象,以提高访问速度。

Java

interface Subject {
    void request();
}

class RealSubject implements Subject {
    @Override
    public void request() {
        System.out.println("RealSubject request");
    }
}

class ProxySubject implements Subject {
    private RealSubject realSubject;

    public ProxySubject() {
        this.realSubject = new RealSubject();
    }

    @Override
    public void request() {
        System.out.println("ProxySubject request");
        realSubject.request();
    }
}

public class Main {
    public static void main(String[] args) {
        Subject subject = new ProxySubject();
        subject.request();
    }
}