示例:
// 主题接口:定义了核心功能 interface Subject { public abstract void eat(); } // 核心主题:实现了主题接口,并且只实现核心功能 class RealSubject implements Subject { public void eat() { System.out.println("核心主题RealSubject要XXXX"); } } // 代理主题:实现了主题接口,完成核心主题的辅助性工作 class ProxySubject implements Subject { Subject subject; public ProxySubject(Subject subject) { this.subject = subject; } public void prepare() { // 代理主题处理的辅助性操作 System.out.println("代理主题准备就绪!"); } public void eat() { // 核心主题要做的事 this.subject.eat(); } public void destory() { // 代理主题处理的辅助性操作 System.out.println("代理主题善后完毕!"); } } // 测试类 class TestProxy { public static void main(String[] args) { Subject realSubject = new RealSubject(); // 核心主题 Subject proxySubject = new ProxySubject(realSubject); // 代理主题 proxySubject.prepare(); proxySubject.eat(); proxySubject.destory(); } }
代理设计模式:
有一个主题操作接口(可能有多种方法),核心业务主题只完成核心功能,比如:吃饭,
而代理主题负责完成所有与核心主题有关的辅助性操作。
示例图:
参考:
· 自己写的接口,绝对不要使用关键字new直接实例化接口子类,使用工厂类完成。