代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问。[DP]
// 定义接口
interface Subject {
void request();
}
// 真实主题对象
class RealSubject implements Subject {
@Override
public void request() {
System.out.println("RealSubject is requested.");
}
}
// 代理主题对象
class ProxySubject implements Subject {
private RealSubject realSubject;
public ProxySubject() {
// 可以在这里进行初始化操作,如权限验证、日志记录等
}
@Override
public void request() {
// 在调用真实对象前可以添加一些操作
System.out.println("ProxySubject is requested.");
if (realSubject == null) {
realSubject = new RealSubject();
}
// 调用真实对象的方法
realSubject.request();
// 在调用真实对象后可以添加一些操作
System.out.println("After RealSubject is requested.");
}
}
// 客户端代码
public class ProxyPatternDemo {
public static void main(String[] args) {
Subject subject = new ProxySubject();
subject.request();
}
}