代理模式
- 特点:两个子类共同实现一个接口,其中一个子类负责真实业务实现,另外一个子类完成辅助真实业务主题的操作
举例:
玩游戏--接口 买口红--接口
真实主题类:你 真是主题:你
代理类:代练 代理类:代购
//抽象主题类
interface Ilipstick{
void buyLipstick();
}
//真实主题类
class RealSubject implements Ilipstick{
public void buyLipstick(){
System.out.println("我要买一支口红!");
}
}
//代理类
class Proxy implements Ilipstick{、
//代理所要实现的哪个类
private RealSubject subject=null;
//通过构造函数传递代理者
public Proxy(RealSubject subject){
this.subject=subject;
}
public void before(){
System.out.println("取钱,排队!");
}
//实现接口中定义的方法
public void buyLipstick(){
this.before();
subject.buyLipstick();
this.after();
}
public void after(){
System.out.println("邮递,结束!");
}
}
public class Test{
public static void main(String[] args){
Ilipstick MyProxy=new Proxy(new RealSubject());
//MyProxy.before();
MyProxy.buyLipstick();
//MyProxy.after();
}
}
- 代理模式的本质:所有的真实业务操作都会有一个与之辅助的工具类(功能类)共同完成