模式結構:
Subject:抽象主題角色
Proxy:代理主題角色
RealSubject:真實主題角色
UML圖:
例子代碼:
抽象主題角色:
public interface Subject {
void request();
}
具體主題角色:
public class ConcreteSubject implements Subject {
@Override
public void request() {
System.out.println("代理...");
}
}
public class Proxy implements Subject{
private Subject subject;
public Proxy(Subject subject) {
this.subject = subject;
}
public void preRequest(){
System.out.println("代理前...");
}
public void afterRequest(){
System.out.println("代理後...");
}
@Override
public void request() {
preRequest();
subject.request();
afterRequest();
}
}
客戶類:
public class Client {
public static void main(String[] args) {
//實例代理對象
Subject subject = new ConcreteSubject();
//對象代理
Proxy proxy = new Proxy(subject);
//代理結果
proxy.request();
}
}
結果打印: