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

适用性

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

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

相关推荐
孬甭_5 分钟前
C++ vector
开发语言·c++
学计算机的计算基23 分钟前
操作系统内存管理全解:虚拟内存、页表、COW、malloc、OOM一篇搞定
java·笔记·算法
tachibana227 分钟前
hot100 前 K 个高频元素(347)
java·数据结构·算法·leetcode
AOwhisky29 分钟前
Python 学习笔记(第五期)——组合数据类型:列表、元组、集合与字典精讲——核心知识点自测与详解
开发语言·笔记·python·学习·云计算
万亿少女的梦1681 小时前
基于Spring Boot、Java与MySQL的网络订餐系统设计与实现
java·spring boot·mysql·系统设计·网络订餐
触底反弹1 小时前
🤯 面试被问 AI Workflow 和 Agent 有啥区别?3 张图 + 2 段代码讲清楚!
人工智能·设计模式·面试
咩咩啃树皮9 小时前
第40篇:Vue3组件化开发精讲——组件拆分、复用、父子通信、工程化架构
java·前端·架构
灯澜忆梦9 小时前
GO_并发编程---定时器
开发语言·后端·golang
鱟鲥鳚10 小时前
Spring Boot 集成 LangChain4j:从模型调用到 Tool Calling(Demo版)
java·spring boot
-银雾鸢尾-10 小时前
C#中的StringBuilder相关方法
开发语言·c#