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

适用性

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

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

相关推荐
abcnull1 小时前
用javaparser做精准测试
java·ast·静态代码分析·精准测试·javaparser
叶小鸡1 小时前
Java 篇-项目实战-苍穹外卖-笔记汇总
java·开发语言·笔记
AI人工智能+电脑小能手2 小时前
【大白话说Java面试题】【Java基础篇】第22题:HashMap 和 HashSet 有哪些区别
java·开发语言·哈希算法·散列表·hash
juniperhan2 小时前
Flink 系列第21篇:Flink SQL 函数与 UDF 全解读:类型推导、开发要点与 Module 扩展
java·大数据·数据仓库·分布式·sql·flink
ID_180079054732 小时前
Python 实现亚马逊商品详情 API 数据准确性校验(极简可用 + JSON 参考)
java·python·json
c++之路2 小时前
C++23概述
java·c++·c++23
时空系2 小时前
第10篇:继承扩展——面向对象编程进阶 python中文编程
开发语言·python·ai编程
专注API从业者3 小时前
Open Claw 京东商品监控选品实战:一键抓取、实时监控、高效选品
java·服务器·数据库
CHANG_THE_WORLD3 小时前
python 批量终止进程exe
开发语言·python
摇滚侠3 小时前
DBeaver 导入数据库 导入 SQL 文件 MySQL 备份恢复
java·数据库·mysql