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

适用性

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

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

相关推荐
赴生-2 分钟前
C++进阶 C++11(下)
开发语言·c++
一 乐11 分钟前
家政服务管理系统|基于springboot + vue家政服务管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·家政服务管理系统
赴生-1 小时前
C++进阶 异常
开发语言·c++
碳基硅坊1 小时前
Spring AI:把大模型接进 Spring 应用
java·人工智能·spring ai
黄毛火烧雪下1 小时前
Java 核心知识点总结(一)
java·开发语言
其实防守也摸鱼2 小时前
软件安全与漏洞--软件安全编码与防御技术理论题库
开发语言·网络·安全·网络安全·软件安全·软件安全与漏洞
x138702859572 小时前
c语言中srtlen(指针使用计算字符长度)、传值和传址调用
c语言·开发语言·算法·visual studio
iCxhust2 小时前
C#进程管理程序
开发语言·汇编·stm32·单片机·c#·微机原理
凡人叶枫2 小时前
Effective C++ 条款28:避免使用 handles 指向对象内部
linux·服务器·开发语言·c++·嵌入式开发
技术小结-李爽2 小时前
【工具】Maven的下载、安装、使用
java·maven