设计模式——外观模式

以下单摘果为案例,客户下单后产生了一系列的动作:采摘 -> 商品包装 -> 物流送货

根据上图流程,每下一个订单都需要经过三个步骤,如果每一个订单都需要关注三个组件服务的使用细节,那会使用的风险。因此需要糅合功能,对外只提供一个入口。

  1. 调用方只关注facade组件,不需要知道底层服务;
  2. 隐藏掉底层服务中不想干的功能

代码逻辑如下:

//分别新建采摘、打包、快递三个服务类
public class PickService {
    public void doPick() {
        System.out.println("采摘水果");
    }
}
public class PackageService {
    public void doPack() {
        System.out.println("商品打包装");
    }
}
public class SendService {
    public void doSend() {
        System.out.println("水果快递发货");
    }
}

//对外提供一个公共接口
public class OrderFacade {
    private PickService pickService;
    private PackageService packageService;
    private SendService sendService;
    public OrderFacade() {
        this.pickService = new PickService();
        this.packageService = new PackageService();
        this.sendService = new SendService();
    }
    /**
     * 客户处理订单类
     */
    public void doOrder() {
        pickService.doPick();
        packageService.doPack();
        sendService.doSend();
    }
}

//外观模式测试
public class CustomerClient {
    public static void main(String[] args) {
        OrderFacade order = new OrderFacade();
        order.doOrder();
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值