内容纲要
代理模式(Proxy Pattern)是一种结构型设计模式,它为其他对象提供一个代理或占位符,以便在访问这些对象时可以控制对它们的访问。代理模式可以用于实现懒加载、访问控制、日志记录等功能。
以下是一个简单的Java实现:
- 创建一个主题接口(Subject Interface),表示代理对象和真实对象共同实现的接口:
public interface Subject {
void request();
}
- 创建一个真实主题类(Real Subject),实现主题接口:
public class RealSubject implements Subject {
@Override
public void request() {
System.out.println("Real Subject request.");
}
}
- 创建一个代理类(Proxy),实现主题接口并持有一个真实主题对象的引用:
public class Proxy implements Subject {
private RealSubject realSubject;
@Override
public void request() {
preRequest();
if (realSubject == null) {
realSubject = new RealSubject();
}
realSubject.request();
postRequest();
}
private void preRequest() {
System.out.println("Pre-processing in Proxy.");
}
private void postRequest() {
System.out.println("Post-processing in Proxy.");
}
}
- 使用代理模式创建对象:
public class Main {
public static void main(String[] args) {
Subject proxy = new Proxy();
proxy.request();
}
}
运行上述代码,你将看到:
Pre-processing in Proxy.
Real Subject request.
Post-processing in Proxy.
代理模式让你可以在不修改原始对象代码的情况下,控制对这些对象的访问。这种模式在需要实现懒加载、访问控制、日志记录等功能时非常有用。代理模式也有多种变体,如虚拟代理、保护代理和远程代理等。