代理模式的精髓就在于有一个核心主题操作接口(可能有多种方法),核心业务只完成核心功能,
而代理主题则负责完成与核心主题相关的辅助性操作。
附上丑图加以说明:
真正的代理模式,客户端既不需要关注真实主题类,也不需要关注代理主题类,所有这一切都是自动完成的。
只需要关注核心主题接口就可以实现。
附上简单的代理模式demo:
package cn.demo.test;
interface Subject {
void doSomething();
}
class RealSubject implements Subject {
@Override
public void doSomething() {
System.out.println("核心主题业务");
}
}
class ProxySubject implements Subject {
private Subject subject;
public ProxySubject(Subject subject){
this.subject = subject;
}
private void beforeDoSomething(){
System.out.println("核心主题业务调用之前的操作");
}
@Override
public void doSomething() {
beforeDoSomething();
subject.doSomething();
afterDoSomething();
}
private void afterDoSomething(){
System.out.println("核心主题业务调用之后的收尾");
}
}
public class ProxyPatternDemo {
public static void main(String[] args) {
Subject subject = new ProxySubject(new RealSubject());
subject.doSomething();
}
}