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

适用性

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

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

相关推荐
Hello_Damon_Nikola6 分钟前
AC7911从入门到精通
开发语言·嵌入式硬件·物联网·php
xbgRS8 分钟前
java中的线程
java
worxfr12 分钟前
Go 并发控制:从 Channel 方向约束到实战模式
开发语言·后端·golang
带鱼吃猫16 分钟前
预处理器:宏、运算符与条件编译
c语言·开发语言
小小龙学IT24 分钟前
C++ std::vector 底层实现深度解析:内存布局、扩容策略、移动语义与迭代器失效
开发语言·c++·算法
码匠许师傅1 小时前
【C++ 面试真题】聊聊 volatile 和 mutable
开发语言·c++·面试
ChaHae-In1 小时前
MyBatis入门操作
java·mybatis
xcLeigh1 小时前
Go入门:短变量声明的陷阱与最佳实践
java·redis·golang·教程·变量
(Charon)1 小时前
【C++】线程安全队列(二):生产者消费者模型与 condition_variable 阻塞等待
c语言·开发语言·c++
青山木1 小时前
Hot 100 --- 最小栈
java·数据结构·算法·leetcode