设计模式——外观(门面)模式10

本文介绍了如何使用外观模式将抽奖和快递系统功能封装到`Facade`类中,以简化客户端的调用过程,实现对复杂业务流程的隐藏和控制。
摘要由CSDN通过智能技术生成

外观模式:能为系统框架或其他复杂业务流程封装提供一个简单的接口。
例如抽奖过程中
设计模式,一定要敲代码理解

在这里插入图片描述

调用1(抽奖系统)

/**
 * @author ggbond
 * @date 2024年04月08日 10:34
 */
public class Lottery {
    public String  getId(){
        System.out.println("获取商品id");
        return  "00001";
    }
    public boolean  stockControl(String id){
        System.out.println("库存减一");
        return true;
    }
}

调用2(快递系统)

/**
 * @author ggbond
 * @date 2024年04月08日 10:38
 */
public class Delivery {
    public String  createSaleId(String id){
        System.out.println("商品打包,生产快递订单号");
        return  "00001";
    }
    public boolean  send(String id){
        System.out.println("发货");
        return true;
    }
}

门面

/**
 * @author ggbond
 * @date 2024年04月08日 10:43
 */
public class Facade {
    private Delivery delivery;
    private  Lottery lottery;

    public Facade( Lottery lottery,Delivery delivery) {
        this.delivery = delivery;
        this.lottery = lottery;
    }

    public void  toLottery(){
       String id= lottery.getId();//抽奖
        boolean f= lottery.stockControl(id); //库存管理
        if(true==f) {
            delivery.createSaleId(id);//生成订单信息
            delivery.send(id); //发货
        }

    }
}

客户端调用

/**
 * @author ggbond
 * @date 2024年04月08日 10:40
 */
public class Main {
    public static void main(String[] args) {
        //客户端进行抽奖(普通写法)
        Lottery lottery=new Lottery();
        Delivery delivery=new Delivery();
       String id=lottery.getId();
        boolean stockControl = lottery.stockControl(id);
        if (stockControl) {
            delivery.createSaleId(id);//生成订单信息
            delivery.send(id); //发货
        }

        //门面模式 抽奖封装,客户端执行封装好的一个服务方法。
        Facade facade=new Facade(lottery,delivery);
        facade.toLottery();
    }
}

结果

获取商品id
库存减一
商品打包,生产快递订单号
发货

总结

门面模式目的在于,封装个子系统代码流程,使其独立于复杂子系统。

代码下载

代码下载

  • 12
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值