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

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

概念

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

理解

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

实现

java 复制代码
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("订购飞机票");
    }
}
java 复制代码
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("订购汽车票");
    }
}
java 复制代码
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("订购火车票");
    }
}

门面代码

java 复制代码
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();
    }

}

测试

java 复制代码
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();
    }
}

适用性

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

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

相关推荐
二哈赛车手6 小时前
新人笔记---ApiFox的一些常见使用出错
java·笔记·spring
为何创造硅基生物6 小时前
C语言 结构体内存对齐规则(通俗易懂版)
c语言·开发语言
吃好睡好便好6 小时前
在Matlab中绘制横直方图
开发语言·学习·算法·matlab
栗子~~6 小时前
JAVA - 二层缓存设计(本地缓冲+redis缓冲+广播所有本地缓冲失效) demo
java·redis·缓存
星寂樱易李6 小时前
iperf3 + Python-- 网络带宽、网速、网络稳定性
开发语言·网络·python
YDS8296 小时前
DeepSeek RAG&MCP + Agent智能体项目 —— RAG知识库的搭建和接口实现
java·ai·springboot·agent·rag·deepseek
仰泳之鹅7 小时前
【C语言】自定义数据类型2——联合体与枚举
c语言·开发语言·算法
之歆7 小时前
DAY_12JavaScript DOM 完全指南(二):实战与性能篇
开发语言·前端·javascript·ecmascript
未若君雅裁8 小时前
MyBatis 一级缓存、二级缓存与清理机制
java·缓存·mybatis
cen__y8 小时前
Linux12(Git01)
linux·运维·服务器·c语言·开发语言·git