一、外观模式
外观模式是一组具有类似功能的类群,提供一个一致的简单的界面,这个界面就叫外观。
在下面的例子中,外观模式将具有类似功能的子系统抽象到同一个接口来管理,外界仅需要通过这个接口来和子系统进行交互,而不是直接和子系统来交互
#include <iostream>
#include <string>
using namespace std;
class Sys1 {
public:
void run() {
cout << "sys1 start...\n";
}
};
class Sys2 {
public:
void run() {
cout << "sys2 start...\n";
}
};
class Sys3 {
public:
void run() {
cout << "sys3 start...\n";
}
};
class Facede {
public:
Facede() {
p1 = new Sys1;
p2 = new Sys2;
p3 = new Sys3;
}
void runSys() {
p1->run();
p2->run();
p3->run();
}
private:
Sys1* p1;
Sys2* p2;
Sys3* p3;
};
void test() {
Facede *p = new Facede;
p->runSys();
delete p;
}
int main() {
test();
return 0;
}
二、例子
ktv模式启动和关闭,如果想加游戏模式,也可以加。
#include <iostream>
#include <string>
using namespace std;
class Television {
public:
void On() {
cout << "TV ON...\n";
}
void Off() {
cout << "TV Off...\n";
}
};
class Light {
public:
void On() {
cout << "Light ON...\n";
}
void Off() {
cout << "Light Off...\n";
}
};
class Audio {
public:
void On() {
cout << "Audio ON...\n";
}
void Off() {
cout << "Audio Off...\n";
}
};
// facede1
class KTV_mode {
public:
KTV_mode() {
tv = new Television;
light = new Light;
audio = new Audio;
}
~KTV_mode() {
delete tv;
delete light;
delete audio;
}
void onKTVmode() {
tv->On();
light->Off();
audio->On();
}
void offKTVmode() {
tv->Off();
light->On();
audio->Off();
}
private:
Television* tv;
Light* light;
Audio* audio;
};
void test() {
KTV_mode* ktv = new KTV_mode;
ktv->onKTVmode();
delete ktv;
}
int main() {
test();
return 0;
}