1.使用场景
最常见的便是苹果公司与富士康。
(1)苹果公司提出要求:想要一个 iphone XR 的内置完整电路板
(2)中介公司接到需求,传达给富士康
(2)富士康接收到用户需求,进行内置电路板的组装
(3)富士康生产好之后给中介,中介再进行转交,苹果公司拿到产品
在这个场景中,苹果公司就是真实业务实现类,富士康担任代理类的角色,而他们要通过中介公司完成操作。所以中介就是两个子类都要事先的接口。
2.代理本质:
两个子类共同实现一个接口,其中一个子类负责真实业务实现,另一个子类完成辅助操作。
3.实现代码:
//有人要买东西
interface IBuy{
//买什么东西
void buyBuy();
}
//真实买东西的人(买家) 真实主题类
class RealBuyer implements IBuy{
//覆写
public void buyBuy(){
System.out.println("买一个mac rubywoo");
}
}
//代理去买东西 代理类
class ProxyBuyer implements IBuy{
//需要一个买家,传入真实主题类
private IBuy buyer;
public ProxyBuyer(IBuy buyer){
this.buyer = buyer;
}
public void beforeBuy(){
System.out.println("买家打钱");
}
public void afterBuy(){
System.out.println("代理寄东西");
}
//覆写
public void buyBuy(){
this.beforeBuy();
this.buyer.buyBuy();
this.afterBuy();
}
}
public class Test1{
//客户端
public static void main(String[] args) {
IBuy buyer = new ProxyBuyer(new RealBuyer());
buyer.buyBuy();
}
}