设计模式:外观模式(C++)【颜值很重要】

外观模式介绍

外观 外观 从名字都可以看出来对 颜值很看重呗。21世纪都是刷脸的时代,当然颜值很重要。那么对于我们写的代码 也一样,也需要好看的颜值,记得有本书叫 《代码整洁之道》 说的就是相关的内容。在我们的设计模式中呀,我们给用户呈现的应该是一个简单且统一的接口,我们不需要把接口实现的细节让用户知道,当然用户也不想知道你是怎么实现 。这也就是我们设计模式中的最少知道原则,又被称为 迪米特法则。那我们的外观模式呢就是围绕这个进行展开的

外观模式,为子系统中的一组接口提供一个一致的界面(对外提供),此模式定义了一个高层接口,这个接口使的这一子系统更加容易使用。下面看看外观模式的标准模型图。

外观模式模型图

设计模式:外观模式(C++)【颜值很重要】_第1张图片

外观模式案例

我们就用一个智能家居系统举例吧,智能家居系统 有KTV模式、观影模式,这是对外也就是给客户提供的。具体到KTV模式需要运行一些子系统,比如说 什么 灯光系统、音响系统、麦克风系统呀 这些 统统 没必要让用户知道和操作,我们的外观类具体进行负责 对客户对外就提供简洁的界面,内部自己实现那些子系统的调用。

智能家居代码

#define _CRT_SECURE_NO_WARNINGS
#include 
using namespace std;

class LightSystem
{
public:
	void on()
	{
		cout << "开灯..." << endl;
	}
	void off()
	{
		cout << "关灯..." << endl;
	}
};
class MovieSystem
{
public:
	void on()
	{
		cout << "放电影..." << endl;
	}
	void off()
	{
		cout << "关闭电影..." << endl;
	}
};
class SounderSystem
{
public:
	void on()
	{
		cout << "打开音响..." << endl;
	}
	void off()
	{
		cout << "关闭音响..." << endl;
	}
};
class MusicSystem
{
public:
	void on()
	{
		cout << "放音乐..." << endl;
	}
	void off()
	{
		cout << "关闭音乐..." << endl;
	}
};
class MicrophoneSystem
{
public:
	void on()
	{
		cout << "麦克风打开..." << endl;
	}
	void off() 
	{
		cout << "麦克风关闭..." << endl;
	}
};
//智能生活,给用户提供简洁的界面
class HomeSystem
{
public:
	//KTV模式...
	void OpenKTV()
	{
		//关灯
		light.off();
		//打开音响
		sounder.on();
		//音乐走起
		music.on();
		//打开麦克风
		microphone.on();
		cout << "*********KTV模式 欢迎您********" << endl;
	}
	void CloseKTV()
	{

		light.on();
		sounder.off();
		music.off();
		microphone.off();
		cout << "**********KTV模式 已经关闭********" << endl;
	}
	//观影模式...
	void OpenMovie()
	{
		//关灯
		light.off();
		//打开音响
		sounder.on();
		//放电影
		sounder.on();
		cout << "*********家庭影院模式 欢迎您********" << endl;
	}
	void CloseMovie()
	{
		light.on();
		sounder.off();
		sounder.off();
		cout << "*********家庭影院模式 已经关闭********" << endl;
	}
private:
	LightSystem light;
	MovieSystem movie;
	MusicSystem music;
	SounderSystem sounder;
	MicrophoneSystem microphone;
};

//客户端 只需要和系统统一的接口进行 交互,没有必要知道更多 -->迪米特法则(最少知道原则)
//给用用户提供 简洁的接口 是外观模式 最重要的一点
int main(int argc, char *argv[])
{
	HomeSystem home;
	home.OpenKTV();//开启KTV模式
	home.CloseKTV();

	home.OpenMovie();//开启电影模式
	home.CloseMovie();
	return EXIT_SUCCESS;
}


代码运行结果

设计模式:外观模式(C++)【颜值很重要】_第2张图片

你可能感兴趣的:(【设计模式】,【Language_C++】,设计模式(C++版))