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

news/2024/11/29 9:33:12/

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

在这里插入图片描述

调用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
库存减一
商品打包,生产快递订单号
发货

总结

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

代码下载

代码下载


http://www.ppmy.cn/news/1418494.html

相关文章

基于YOLOv5s的电动车入梯识别系统(数据集+权重+登录界面+GUI界面+mysql)

本文目录 1.UI界面 2.注册登录 3.算法准确率 4.数据集 1.UI界面 本人训练的yolov5s模型,准确率在98.6%左右,可准确完成电梯内检测电动车任务,并搭配了GUI检测界面,支持权重选择、图片检测、视频检测、摄像头检测、识别结果拍照…

【STL详解 —— stack和queue的介绍及使用】

STL详解 —— stack和queue的介绍及使用 stackstack的定义方式stack的使用 queuequeue的定义方式queue的使用 stack stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其只能从容器的一端进行元素的插入与提取操作。 stack的定义方式 首…

[leetcode] 705. 设计哈希集合

不使用任何内建的哈希表库设计一个哈希集合(HashSet)。 实现 MyHashSet 类: void add(key) 向哈希集合中插入值 key 。 bool contains(key) 返回哈希集合中是否存在这个值 key 。 void remove(key) 将给定值 key 从哈希集合中删除。如果哈希…

Web API(六)之正则表达式

Web API(六)之正则表达式 正则表达式正则基本使用元字符边界符量词范围字符类替换和修饰符change 事件判断是否有类正则表达式 正则表达式(Regular Expression)是一种字符串匹配的模式(规则) 使用场景: 例如验证表单:手机号表单要求用户只能输入11位的数字 (匹配)过滤…

使用simulink进行汽车软件建模的经验介绍

使用Simulink进行汽车软件建模的经验介绍可以从多个方面进行阐述。首先,Simulink提供了一个强大的平台,支持车辆模型的搭建和仿真,包括但不限于商用车整车模型、自动驾驶仿真框架的构建。这表明Simulink能够满足不同自动驾驶开发任务的需求,通过选择不同的车辆、传感器模型…

ChatGPT 专属指南:利用ChatGPT提升论文写作效率

ChatGPT无限次数:点击直达 ChatGPT 专属指南:利用ChatGPT提升论文写作效率 引言 随着人工智能技术的不断发展,如今许多工具被开发出来,以帮助人们更高效地进行各种工作。其中,ChatGPT作为一个强大的语言生成模型,不仅…

linux下coredump问题的定位分析方法

(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu) 参考:https://blog.csdn.net/m0_73698480/article/details/130077852 最近定位了一段时间linux下的崩溃问题,又收集了一些思路,特整理记录一下。 常见coredump定位方法是&#xff1a…

java实现TCP交互

服务器端 import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.PriorityQueue; import java.util.Scanner;public class TCP_Serv…