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

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();}
}

适用性

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

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

http://www.xdnf.cn/news/1377.html

相关文章:

  • 大模型驱动金融数据应用的实战探索
  • 网络安全职业技能大赛Server2003
  • 使用 Oracle 数据库进行基于 JSON 的应用程序开发
  • 线程概念与控制
  • (四)微服务架构、容器编排架构
  • CPP_类和对象
  • 安全复健|windows常见取证工具
  • 基于Java与MAVLink协议的多无人机(Cube飞控)集群控制与调度方案问题
  • 如何开启远程桌面连接外网访问?异地远程控制内网主机
  • GitLab Runner配置并行执行多个任务
  • 路由与OSPF学习
  • DeepSeek在物联网设备中的应用:通过轻量化模型实现本地化数据分析
  • setInterval可能的坑
  • SSH 私钥文件权限控制指南
  • CLIMB自举框架:基于语义聚类的迭代数据混合优化及其在LLM预训练中的应用
  • Kotlin高阶函数 vs Lambda表达式:关键区别与协作关系
  • 用高斯溅射技术跨越机器人模拟与现实的鸿沟:SplatSim 框架解析
  • 通过 API 对接应用网络商城实现订单自动化
  • Prompt 结构化提示工程
  • flutter和vue3项目利用webview_flutter插件通信
  • C语言中的递归1.0
  • 在C#串口通信中,一发一收的场景,如何处理不同功能码的帧数据比较合理,代码结构好
  • Transformer:引领深度学习新时代的架构
  • 深入探究Python中`__init__.py`文件的奥秘
  • SOA半导体光放大器在光纤光栅解调系统中的应用分析
  • python三维矩阵的维度
  • 将输入帧上下文打包到下一个帧的预测模型中用于视频生成
  • 什么是区块?
  • 【Java】Hibernate的检索方式的概述
  • pytest心得体会