接口的应用(三)—— 代理设计模式(Proxy)
代理设计模式的核心精髓就是有一个主题操作接口(可能有多种方法),核心业务只完成核心功能,例如:吃饭。而代理主题负责完成所有与核心主题有关的辅助性操作,例如:做菜、洗碗。
eg.
interface Subject {//主题操作接口
public void make();
}
class RealSubject implements Subject {//完成核心功能的真实主题
public void make() {
System.out.println("Subject正在进行。");
}
}
class ProxySubject implements Subject {
private Subject subject;
//要接收一个真实主题的操作对象
public ProxySubject(Subject subject) {
this.subject=subject;
}
public void prepare() {
System.out.println("代理为Subject开始做准备");
}
public void destroy() {
System.out.println("代理为Subject结束收尾");
}
public void make() {
this.prepare();
this.subject.make();//调用真实主题操作
this.destroy();
}
}
public class Test {
public static void main(String[] args) {
Subject sub =new ProxySubject(new RealSubject());
sub.make();//调用代理主题操作,由代理主题调用真实主题操作,代理主题完成比真实主题更多的操作
}
}
运行结果:
代理为Subject开始做准备
Subject正在进行。
代理为Subject结束收尾
- 代理模式结构图: