C++外观模式

C++外观模式

#include <iostream>
using namespace std;
//外观模式就是将复杂的子类系统抽象到同一个接口进行管理,
//外界只需要通过此接口与子类系统进行交互,
//而不必要和复杂的子类系统进行交互
class Television //电视机类
{
public:
	void On(){
		cout << "电视机打开" << endl;
	}
	void Off() {
		cout << "电视机关闭" << endl;
	}
};
class Gamemachine //游戏机类
{
public:
	void On() {
		cout << "游戏机打开" << endl;
	}
	void Off() {
		cout << "游戏机关闭" << endl;
	}
};
class Microphone //麦克风类
{
public:
	void On() {
		cout << "麦克风打开" << endl;
	}
	void Off() {
		cout << "麦克风关闭" << endl;
	}
};
class Sound //音响类
{
public:
	void On() {
		cout << "音响打开" << endl;
	}
	void Off() {
		cout << "音响关闭" << endl;
	}
};
class Light //灯类
{
public:
	void On() {
		cout << "灯打开" << endl;
	}
	void Off() {
		cout << "灯关闭" << endl;
	}
};
class DVD //DVD类
{
public:
	void On() {
		cout << "DVD打开" << endl;
	}
	void Off() {
		cout << "DVD关闭" << endl;
	}
};
class Facade
{
public:
	Facade() {
		ds = new   Television;
		yxj = new    Gamemachine;
		mkf = new   Microphone;
		yx = new   Sound;
		d     = new Light;
		dvd  = new DVD;
	}
	void KTVPattern()//KTV模式
	{
		cout << "KTV模式启动中,请稍后!" << endl;
		ds->On();
		d->Off();
		mkf->On();
		yx->On();
		dvd->On();
	}
	void GamePattern() //游戏机模式
	{
		cout << "游戏机模式启动中,请稍后!" << endl;
		ds->On();
		yx->On();
		yxj->On();
	}
	~Facade() {
		delete ds;
		delete yxj;
		delete mkf;
		delete yx;
		delete d;
		delete dvd;
	}
private:
	Television*ds;
	Gamemachine*yxj;
	Microphone*mkf;
	Sound*yx;
	Light*d;
	DVD*dvd;
};
void test() {
	Facade*myFacade = new Facade;
	myFacade->KTVPattern();
	myFacade->GamePattern();
}
void main() {
	test();
}

效果图:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44567289/article/details/92760342