当前位置: 首页 > news >正文

JAVA设计模式——(四)门面模式

JAVA设计模式——(四)门面模式

  • 概念
  • 理解
  • 实现
    • 门面代码
    • 测试
  • 适用性

概念

在一个子系统中提供一个统一的接口用于访问系统功能,使得子系统更加易于使用。

理解

这个模式相对简单,非常容易理解。最简单的就是一个买票的app,我们下单之后,app会发送请求到后端,后端的各种操作我们都是不知道的,隐蔽了实现的细节。所以这个app的前端的各种功能,就是一个门面模式。

实现

package cn.sh.designepattern.example01;/*** @Author song* @Version 0.0.1* @Date 2025/4/23 19:41* @Contact 643947568@qq.com*/
public class BookAirTickets {public void bookTickets(){System.out.println("订购飞机票");}
}
package cn.sh.designepattern.example01;/*** @Author song* @Version 0.0.1* @Date 2025/4/23 19:42* @Contact 643947568@qq.com*/
public class BookBusTickets {public void bookTickets(){System.out.println("订购汽车票");}
}
package cn.sh.designepattern.example01;/*** @Author song* @Version 0.0.1* @Date 2025/4/23 19:42* @Contact 643947568@qq.com*/
public class BookTrainTickets {public void bookTickets(){System.out.println("订购火车票");}
}

门面代码

package cn.sh.designepattern.example01;/*** @Author song* @Version 0.0.1* @Date 2025/4/23 19:43* @Contact 643947568@qq.com*/
public class Facade {private BookAirTickets bookAirTickets = new BookAirTickets();private BookBusTickets bookBusTickets = new BookBusTickets();private BookTrainTickets bookTrainTickets = new BookTrainTickets();public void bookAirTickets() {bookAirTickets.bookTickets();}public void bookBusTickets() {bookBusTickets.bookTickets();}public void bookTrainTickets() {bookTrainTickets.bookTickets();}}

测试

package cn.sh.designepattern.example01;/*** 门面模式* 在一个子系统中提供一个统一的接口用于访问系统功能,使得子系统更加易于使用。** @Author song* @Version 0.0.1* @Date 2025/4/23 19:32* @Contact 643947568@qq.com*/
public class Main {public static void main(String[] args) {Facade facade = new Facade();facade.bookAirTickets();facade.bookBusTickets();facade.bookTrainTickets();}
}

适用性

为一个复杂的子系统提供一个简单的接口。隐藏内部细节。为子系统提供简单的接口门面,让系统易于使用。

此外,对于系统分层展示,也十分有效。

相关文章:

  • 系统架构师2025年论文《系统架构风格》
  • Python----深度学习(神经网络的过拟合解决方案)
  • 【无人机】无人机光流模块Optical Flow设置(三),光流测距一体传感器的配置。凌启科技的光流测距一体模块的测试。
  • 数字化转型避坑指南:中钧科技如何用“四个锚点”破解转型深水区
  • .NET 6 WPF 利用CefSharp.Wpf.NETCore显示PDF文件
  • 如何确定置信水平的最佳大小
  • 深入理解分布式事务:从ACID与CAP理论到六大落地实现方案详解
  • Dart Flutter数据类型详解 int double String bool list Map
  • 0-1背包的运算规则
  • rabbitmq-spring-boot-start版本优化升级
  • MyBatis-Plus 使用 Wrapper 构建动态 SQL 有哪些优劣势?
  • Dbeaver连接达梦数据库
  • wails generate 的用法
  • 什么是量子计算?它能做什么?
  • 【android bluetooth 框架分析 03】【Bta 层详解 1】【Bluetooth Application Laye 介绍】
  • 深入学习Axios:现代前端HTTP请求利器
  • 打造产教融合高质量范本!麒麟信安入选2024年电子信息产教融合典型案例
  • c++中iota容器和fill的区别
  • 爬虫学习——获取动态网页信息
  • 智能滚动抽奖--测试报告
  • “雷公”起诉人贩子王浩文案开庭:庭审前手写道歉信,庭审中不承认拐走川川
  • 与包乐史驾帆航行|航海、钓鱼和写书:一个记者的再就业之路
  • 云南城投去年营收约19.29亿元,亏损4945万元
  • 水利部启动干旱防御Ⅳ级响应,指导广西陕西抗旱保供保灌
  • 话剧《门第》将开启全国巡演:聚焦牺牲、爱与付出
  • 官方披露:WinRAR安全漏洞可绕过安全警告,执行恶意软件