1.代理设计模式
指用一个代理主题来操作真实主题,真实主题执行具体的业务操作,而代理主题负责其他相关业务的处理
2.代理模式的核心角色
(1)抽象主题(Subject)
定义了真实主题和代理主题的共同接口,这样在任何使用真实主题的地方都可以使用代理主题
(2)真实主题(Real Subject)
实现了抽象主题接口,是代理对象所代表的真实对象。客户端直接访问真实主题,但在某些情况下,可以通过代理主题来间接访问
(3)代理(Proxy)
实现了抽象主题接口,并持有对真实主题的引用。代理主题通常在真实主题的基础上提供一些额外的功能
(4)客户端(Client)
使用抽象主题接口来操作真实主题或代理主题,不需要知道具体是哪一个实现类
3.代码案例
(1)代理设计模式类图
(2)代码实现
public interface IEat {
public void eat();
}
// 真实主题类
public class EatReal implements IEat {
@Override
public void eat() {
System.out.println("{真实主题}开始炫饭");
}
}
// 代理主题类
public class EatProxy implements IEat {
private IEat eat;
public EatProxy(IEat eat) {
this.eat = eat;
}
@Override
public void eat() {
this.prepare();
this.eat.eat();
this.clear();
}
public void prepare(){
System.out.println("{代理主题}准备饭菜");
}
public void clear(){
System.out.println("{代理主题}收拾碗筷");
}
}
public class Demo {
public static void main(String[] args) {
IEat eat = new EatProxy(new EatReal());
eat.eat();
}
}
/*
* 程序执行结果
* {代理主题}准备饭菜
* {真实主题}开始炫饭
* {代理主题}收拾碗筷
*/