代理模式
特点:两个子类共同实现同一个接口,其中一个子类负责真实业务实现,另一个子类完成辅助真实业务主题的操作
玩游戏——接口
真实主题类——自己
代理类——代练
买口红——接口
真实主题类——自己
代理类——代购
一个简单的代理模式
interface ISubject{
void buyLipstick();
}
class realSubject implements ISubject{
@Override
public void buyLipstick() {
System.out.println("买口红");
}
}
class proxySubject implements ISubject{
//代理需要知道真实客户
//意思是我不知道具体的客户是谁
//但是找我的人一定是买口红
private ISubject realSubject;
public proxySubject(ISubject realSubject){
this.realSubject = realSubject;
}
public void beforeBuylipstick(){
System.out.println("取钱、排队");
}
public void afterBuylipstick(){
System.out.println("送货");
}
@Override
public void buyLipstick() {
beforeBuylipstick();
realSubject.buyLipstick();
afterBuylipstick();
}
}
public class Test {
public static void main(String[] args) {
proxySubject proxySubject = new proxySubject(new realSubject());
proxySubject.buyLipstick();
}
}
/**输出
取钱、排队
买口红
送货
*/
代理模式的本质:所有的真实业务操作都会有一个与之辅助的工具类(功能类)共同完成。