设计模式 -- 外观模式Facade

本文介绍外观模式在软件工程中的应用,它通过提供统一接口简化客户端与复杂子系统的交互,减少耦合度。以计算机与人的故事为例,展示了如何使用外观模式来封装内部组件,实现简洁易用的接口。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

外观模式:软件工程中常用的一种软件设计模式。它为子系统中的一组接口提供一个统一的高层接口。这一接口使得子系统更加容易使用。

适用于:

       客户端为了避免与复杂的子系统产生耦合而导致随着子系统的变化而变化。外观模式就是为了简化客户端与子系统之间的接口。

结构如下:

子系统:需要利用的各个功能模块

Facade:提供统一的简单接口,内部包含对子系统的包装整合

Client:调用Facade接口,避免与子系统直接交互

结构图:



小例子:计算机与人的故事

#include <iostream>
#include <memory>

using namespace std;

//外观模式:模拟人控制电脑

//电脑内部细节:CPU
class CPU {
public:
	void freeze() { cout << "CPU is freezing" << endl; }
	void execute() { cout << "CPU is executing instruction" << endl; }
};

//电脑内部细节:内存Memory
class Memory {
public:
	void load() { cout << "Memory is loading" << endl; }
};

//电脑内部细节:硬盘
class HardDrive {
public:
	void read() { cout << "HardDrive is reading" << endl; }
};

//外观类Facade: Computer
class Computer {
public:
	Computer()
		: cpu(new CPU()),
		memory(new Memory()),
		hardDrive(new HardDrive())
	{ }

	void startComputer()
	{
		cpu->freeze();
		memory->load();
		cpu->execute();
		hardDrive->read();
	}
private:
	std::shared_ptr<CPU> cpu;
	std::shared_ptr<Memory> memory;
	std::shared_ptr<HardDrive> hardDrive;
};

int main()
{
	Computer facade;
	facade.startComputer();
	return 0;
}
/*
CPU is freezing
Memory is loading
CPU is executing instruction
HardDrive is reading
 */


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值