(十一)代理模式

2019-08-07  本文已影响0人  feiry
水果代理

客户下单不需要知道水果从哪里来,只需要知道结果,不关心中间流程,那么当我们需要购买本地没有的水果时,就需要找代理

代理模式

代理模式

与装饰器模式有点相似,代理类需要实现订单接口,然后内部持有一个订单服务用来存储海外订单

//代理
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();

        //其它业务代码。。。。

    }

适用场景

需要封装原有功能并且可以增强原有功能的场景

总结

代理模式顾名思义就是另一个功能的代理,与装饰器模式思想不同的是,装饰器模式是为了不停地增强自己的功能,而代理模式内部是固定给一个第三方做代理,把功能甩给了第三方。

代理与装饰器对比
上一篇下一篇

猜你喜欢

热点阅读