客户下单不需要知道水果从哪里来,只需要知道结果,不关心中间流程,那么当我们需要购买本地没有的水果时,就需要找代理
代理模式
代理模式与装饰器模式有点相似,代理类需要实现订单接口,然后内部持有一个订单服务用来存储海外订单
//代理
public class ProxyOrder implements OrderService {
//真实的订单服务
private OrderService orderService = new OutOrderServiceImpl();
@Override
public int saveOrder() {
System.out.println("开始海外下订单");
return orderService.saveOrder();
}
}
/**
* 海外订单
*/
public class OutOrderServiceImpl implements OrderService {
@Override
public int saveOrder() {
System.out.println("下单成功,订单号: 66666666");
return 66666666;
}
}
//调用代理
public static void saveOrder(){
//本地代理类
OrderService orderService = new ProxyOrder();
orderService.saveOrder();
//其它业务代码。。。。
}
适用场景
需要封装原有功能并且可以增强原有功能的场景
总结
代理模式顾名思义就是另一个功能的代理,与装饰器模式思想不同的是,装饰器模式是为了不停地增强自己的功能,而代理模式内部是固定给一个第三方做代理,把功能甩给了第三方。
网友评论