生成式AI赋能教育资源生成:从课件到习题的落地实践
2026/10/22 7:51:22
在真实项目中,你经常会遇到这种代码:
CPUcpu=newCPU();Memorymemory=newMemory();Diskdisk=newDisk();cpu.start();memory.load();disk.read();如果每个客户端都要写这一堆启动逻辑:
你会发现:
调用者被迫了解太多“系统内部细节”。
这正是外观模式要解决的问题。
为子系统中的一组接口提供一个统一的高层接口,使得子系统更容易使用。
详解:又名门面模式,是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体的细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。
外观(Facade)模式是“迪米特法则”的典型应用
一句话理解:
给复杂系统套一个“统一入口”。
外观模式的目标不是添加功能,也不是改变接口,而是:
隔离“使用者”和“复杂实现”。
它的本质是:
就像一个前台,你只要找它,不必认识公司所有员工。
外观模式主要包含:
为多个子系统对外提供一个共同的接口。
实现系统的部分功能,客户可以通过外观角色访问它。
publicclassCPU{publicvoidstart(){System.out.println("CPU启动");}}publicclassMemory{publicvoidload(){System.out.println("内存加载");}}publicclassDisk{publicvoidread(){System.out.println("磁盘读取");}}publicclassComputerFacade{privateCPUcpu=newCPU();privateMemorymemory=newMemory();privateDiskdisk=newDisk();publicvoidstart(){cpu.start();memory.load();disk.read();System.out.println("电脑启动完成");}}ComputerFacadecomputer=newComputerFacade();computer.start();客户端再也不用关心 CPU、内存、磁盘的启动顺序。
| 模式 | 目的 |
|---|---|
| 外观 | 简化接口 |
| 适配器 | 转换接口 |
| 桥接 | 分离变化维度 |
jdbcTemplate.query(...)内部封装了:
👉 对外提供“数据库访问外观”。
外观模式不是为了“封死子系统”,而是为了“让大多数人用简单接口”。
高级用户仍然可以直接调用底层模块。
外观模式 | 菜鸟教程
《图解设计模式》
外观 - Java教程 - 廖雪峰的官方网站