代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问。[DP]
// 定义接口
interface Subject {void request();
}// 真实主题对象
class RealSubject implements Subject {@Overridepublic void request() {System.out.println("RealSubject is requested.");}
}// 代理主题对象
class ProxySubject implements Subject {private RealSubject realSubject;public ProxySubject() {// 可以在这里进行初始化操作,如权限验证、日志记录等}@Overridepublic 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();}
}