设计模式-结构型模式-外观模式

概述

外观模式 : Facade Pattern : 是一种 结构型设计模式.

它为复杂子系统提供一个简化的统一接口,使得客户端无需直接与子系统的各个组件交互,从而降低系统的耦合性
核心思想
统一接口 :将多个子系统的复杂操作封装到一个"外观类"中,客户端只需通过外观类的方法调用即可完成操作。
降低复杂度:隐藏子系统的实现细节,简化客户端代码。
个人理解 : 有点像 Service层 整合 不同的 mapper,Controller 层只需要掉一个 service 的方法即可。

这样看来,实际上就是 多了一个 中间层。

角色

客户端(Client) :调用外观类的代码。
外观类(Facade) :定义简化接口,协调子系统的操作。
子系统(Subsystems):具体实现类,负责完成实际业务逻辑。

类图

案例

驾驶员 启动汽车的时候,只需要 按一下启动键,汽车的引擎会发动、仪表盘也会启动;无需 驾驶员 单个系统去操作。

子系统-引擎类

java 复制代码
public class Engine {
    public void start() {
        System.out.println("engine start");
    }
}

子系统-仪表盘类

java 复制代码
public class Dashboard {
    public void start(){
        System.out.println("dashboard start ... ");
    }
}

外观类 - 启动键

java 复制代码
public class CarStarter {
    private Engine engine;
    private Dashboard dashboard;

    public CarStarter()
    {
        engine = new Engine();
        dashboard = new Dashboard();
    }
    // todo 就是这个方法,核心,对子系统的整合。
    public void start()
    {
        engine.start();
        dashboard.start();
    }
}

客户端-驾驶员

java 复制代码
public class User {
    public static void main(String[] args) {
        CarStarter carStarter = new CarStarter();
        // 一键启动汽车
        carStarter.start();
    }
}
复制代码
运行结果:
engine start
dashboard start ... 
相关推荐
Pasregret4 分钟前
访问者模式:分离数据结构与操作的设计模式
数据结构·设计模式·访问者模式
24k小善42 分钟前
Flink TaskManager详解
java·大数据·flink·云计算
想不明白的过度思考者1 小时前
Java从入门到“放弃”(精通)之旅——JavaSE终篇(异常)
java·开发语言
.生产的驴1 小时前
SpringBoot 封装统一API返回格式对象 标准化开发 请求封装 统一格式处理
java·数据库·spring boot·后端·spring·eclipse·maven
猿周LV1 小时前
JMeter 安装及使用 [软件测试工具]
java·测试工具·jmeter·单元测试·压力测试
晨集1 小时前
Uni-App 多端电子合同开源项目介绍
java·spring boot·uni-app·电子合同
时间之城1 小时前
笔记:记一次使用EasyExcel重写convertToExcelData方法无法读取@ExcelDictFormat注解的问题(已解决)
java·spring boot·笔记·spring·excel
椰羊~王小美2 小时前
LeetCode -- Flora -- edit 2025-04-25
java·开发语言
凯酱2 小时前
MyBatis-Plus分页插件的使用
java·tomcat·mybatis
程序员总部2 小时前
如何在IDEA中高效使用Test注解进行单元测试?
java·单元测试·intellij-idea