代理模式:
interface IBuy {
public void buy();
}
class RealBuyer implements IBuy {
@Override
public void buy() {
System.out.println("2、购物消费");
}
}
class ProxyBuyer implements IBuy {
private IBuy buy;
public ProxyBuyer(IBuy buy) {
this.buy = buy;
}
@Override
public void buy() {
this.prepare();
this.buy.buy();
this.record();
}
public void prepare() {
System.out.println("1、推荐店家【代理】");
}
public void record() {
System.out.println("3、送货上门【代理】");
}
}
public class ProxyPatternDemo {
public static void main(String[] args) {
IBuy user = new RealBuyer();
IBuy buy = new ProxyBuyer(user);
buy.buy();
}
}
特点:存在真实业务和代理业务并且两者有统一的接口,代理业务需要有一个以接口为参数的构造方法。
优点:将开发的注意力集中在核心业务功能的处理上,降低系统的耦合度。
缺点:在客户端和真实业务之间增加了代理对象。