设计模式之外观模式

it2022-05-05  170

一、外观模式中的角色与职责

Facade(外观角色):为调用方, 定义简单的调用接口SubSystem(子系统角色):功能提供者。指提供功能的类群(模块或子系统)

二、适用场景

(1) 复杂系统需要简单入口使用 (2) 客户端程序与多个子系统之间存在很大的依赖性

三、示例代码

#define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std; //电视机 class Television{ public: void On(){ cout << "电视机打开..." << endl; } void Off(){ cout << "电视机关闭..." << endl; } }; //灯 class Light{ public: void On(){ cout << "灯打开..." << endl; } void Off(){ cout << "灯关闭..." << endl; } }; //音箱 class Audio{ public: void On(){ cout << "音响打开..." << endl; } void Off(){ cout << "音响关闭..." << endl; } }; //麦克风 class Mircophone{ public: void On(){ cout << "麦克风打开..." << endl; } void Off(){ cout << "麦克风关闭..." << endl; } }; //DVD播放器 class DVDPlayer{ public: void On(){ cout << "DVD播放器打开..." << endl; } void Off(){ cout << "DVD播放器关闭..." << endl; } }; //游戏机 class Gamemachine{ public: void On(){ cout << "游戏机打开..." << endl; } void Off(){ cout << "游戏机关闭..." << endl; } }; class KTVMode{ public: KTVMode(){ pTv = new Television; pLight = new Light; pAudio = new Audio; pMicrophone = new Mircophone; pDvd = new DVDPlayer; } void OnKTV(){ pTv->On(); pLight->Off(); pAudio->On(); pMicrophone->On(); pDvd->On(); } void OffKTV(){ pTv->Off(); pLight->On(); pAudio->Off(); pMicrophone->Off(); pDvd->Off(); } ~KTVMode(){ delete pTv; delete pLight; delete pAudio; delete pMicrophone; delete pDvd; } public: Television* pTv; Light* pLight; Audio* pAudio; Mircophone* pMicrophone; DVDPlayer* pDvd; }; void test(void){ KTVMode* ktv = new KTVMode; ktv->OnKTV(); } int main(void) { test(); system("pause"); return 0; }

 


最新回复(0)