外观模式(Facade Pattern)

非常好!现在我们来讲解结构型设计模式之一:外观模式(Facade Pattern)

我会通过:

✅ 简洁定义 + 🎯 为什么需要 + 🐍 Python 代码(含注释)+ 🧭 流程图 + 应用场景
帮助你快速掌握它的使用方式。


🧠 一句话定义

外观模式通过定义一个统一的高层接口,来简化对一组复杂子系统的调用。


🎯 为什么需要外观模式?

问题外观模式的解决方案
系统内部模块太多,调用复杂提供统一入口
客户端不应知道细节太多屏蔽内部子系统复杂性
提高模块解耦客户端依赖 Facade,而不是每个子类

✅ 优点 vs ❌ 缺点

✅ 优点❌ 缺点
简化使用(统一封装)不易扩展内部子系统功能
降低耦合(只对 Facade 编程)Facade 一旦设计不合理会限制系统能力
符合迪米特法则-

🧩 举例场景:电脑启动系统

启动电脑其实是多个子模块协作(电源、CPU、硬盘、操作系统等)

你不希望用户知道怎么操作每个模块,只需要调用 Computer.start() 即可。


🐍 Python 示例:电脑开机


🔧 1️⃣ 子系统类(多个内部模块)

class CPU:
    def freeze(self):
        print("❄️ CPU 正在冻结等待...")

    def execute(self):
        print("⚙️ CPU 执行指令...")

class Memory:
    def load(self, position, data):
        print(f"🧠 内存加载数据[{data}] 到位置 {position}")

class HardDrive:
    def read(self, sector):
        print(f"💽 硬盘读取扇区 {sector}")
        return f"数据@{sector}"

🧰 2️⃣ 外观类:统一封装复杂过程

class Computer:
    def __init__(self):
        self.cpu = CPU()
        self.memory = Memory()
        self.hard_drive = HardDrive()

    def start(self):
        print("🟢 开始开机...")
        self.cpu.freeze()
        boot_data = self.hard_drive.read(0)
        self.memory.load(0, boot_data)
        self.cpu.execute()
        print("✅ 系统启动成功!")

🧪 3️⃣ 客户端只关心 Facade 接口

if __name__ == "__main__":
    computer = Computer()
    computer.start()

✅ 输出结果:

🟢 开始开机...
❄️ CPU 正在冻结等待...
💽 硬盘读取扇区 0
🧠 内存加载数据[数据@0] 到位置 0
⚙️ CPU 执行指令...
✅ 系统启动成功!

🧭 清晰完整的类图(Mermaid)

Computer
-CPU cpu
-Memory memory
-HardDrive hard_drive
+start()
CPU
+freeze()
+execute()
Memory
+load(position, data)
HardDrive
+read(sector)

🧭 调用流程图(Mermaid)

Client Computer CPU Memory HardDrive start() freeze() read(0) boot_data load(0, boot_data) execute() Client Computer CPU Memory HardDrive

🧠 应用场景总结

场景应用
子系统复杂,外部统一入口启动系统、网络API、银行账户操作
多模块聚合操作多步骤的注册/下单流程
封装第三方库Flask / TensorFlow 二次封装统一接口

✅ 总结口诀

“外面只看一扇门,门后全是子系统”。
✅ 外观模式:用一个统一入口屏蔽多个子模块,让使用者不被内部复杂性干扰


如果你希望我换成你熟悉的场景(比如 Flask 接口封装,AI 模型统一推理接口等)做一个 Facade 示例,也可以立刻提供!是否继续深入?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值