23种设计模式-9外观模式
本文介绍了外观模式(Facade Pattern),这是一种结构型设计模式,通过为复杂系统提供简化接口来降低客户端使用难度。适用场景包括系统内部复杂但需对外提供简单接口、隐藏子系统细节等。外观模式的优点包括简化接口、松散耦合和更好分层。通过计算机启动的代码示例,展示了如何用外观类封装CPU、内存和硬盘等子系统组件,为客户端提供简单的start()方法。该模式核心思想是使用组合方式将复杂逻辑包装为简
外观模式
适合阅读本专栏的人群包括:
- 想提升代码质量和架构思维的 Java 开发者
- 在工作中面对复杂业务、代码难以维护的工程师
- 想准备面试、系统复习设计模式知识的同学
阅读完本专栏,你将掌握:
- 23 种设计模式的结构、适用场景和最佳实践
- 面向对象六大设计原则的使用方式
- 如何用设计模式解决常见业务场景问题
- 如何重构低质量代码,提升扩展性与可维护性
任何问题都可以在留言区指出,作者看到后会第一时间回复。
概念总是生僻的,可以结合代码多体会多练习。
如果本文章给你带来一点点收获请点点赞支持一下,谢谢各位架构师,技术专家,专业大拿。
其他模式详解:设计模式入门
外观模式(Facade Pattern)是一种结构型设计模式,它通过为复杂系统提供一个简化的接口,使得客户端能够更加容易地与系统交互。这个模式隐藏了系统的复杂性,为客户端提供了一个更简单的接口。
适用场景
-
系统内部复杂,希望对外提供简单接口。
-
隐藏子系统细节,降低客户端耦合。
-
整合多个子系统,让外部通过一个入口访问。
外观模式的优点
- 简化接口:通过提供一个简单的接口,隐藏系统的复杂性,减少了客户端需要处理的对象数量。
- 松散耦合:客户端代码与复杂系统的具体实现解耦,使得系统组件可以独立变化而不影响客户端代码。
- 更好的分层:有助于划分系统的层次结构,定义系统的入口点。
类图

代码案例
下面是一个使用外观模式的示例,其中有一个复杂的子系统,它由多个类组成。外观类提供了一个简化的接口,客户端通过这个接口与复杂系统交互。
-
复杂子系统:
CPU,Memory, 和HardDrive类代表了一个计算机系统的不同组件,每个组件都有自己的复杂操作。 -
外观类:
ComputerFacade类封装了这些组件,并提供了一个简化的接口start方法来启动计算机。 -
客户端代码:客户端通过
ComputerFacade类的start方法与系统交互,隐藏了系统的内部细节。
-
复杂子系统
class CPU { public void freeze() { System.out.println("CPU freezing..."); } public void jump(long position) { System.out.println("CPU jumping to position " + position); } public void execute() { System.out.println("CPU executing..."); } } class Memory { public void load(long position, byte[] data) { System.out.println("Loading data into memory at position " + position); } } class HardDrive { public byte[] read(long lba, int size) { System.out.println("Reading data from hard drive (LBA: " + lba + ", size: " + size + ")"); return new byte[size]; } } -
外观类
class ComputerFacade { private CPU cpu; private Memory memory; private HardDrive hardDrive; public ComputerFacade() { this.cpu = new CPU(); this.memory = new Memory(); this.hardDrive = new HardDrive(); } public void start() { cpu.freeze(); memory.load(0x1000, hardDrive.read(0x1000, 1024)); cpu.jump(0x1000); cpu.execute(); } } -
客户端
public class Client { public static void main(String[] args) { ComputerFacade computer = new ComputerFacade(); computer.start(); } }
外观模式属于比较好理解的模式,核心在于使用组合的方式将复杂逻辑包装为简单方法对外提供,相信大家即使不了解外观模式也在开发中使用过这种理念了。
昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链
更多推荐

所有评论(0)