外观模式是将很多个类的行为统一管理形成新的外部接口,它强调内部类之间必须存在协作关系,和外部其他类之间又可看作独立的系统。
#include <iostream>
using namespace std;
class CPU {
public:
void calculation() {}
};
class Memory {
public:
void cache() {}
};
class Disk {
public:
void read() {}
void write() {}
};
class Card {
public:
void view() {}
};
//如果有了电脑,这就是外观模式,统一管理很多相互协作的类。
class Computer {
CPU cpu;
Memory memory;
Card card;
Disk disk;
public:
void keyBoard() {}
void mouse() {}
void moniter() {}
};
int main()
{
//如果没有电脑(外观),那么我们想要播放视频,需要这样做。
//...
Disk().read();
//...
Memory().cache();
//...
CPU().calculation();
//...
Card().view();
//...
//客户程序只需要点机鼠标,观看屏幕。
Computer computer;
computer.mouse();
computer.moniter();
return 0;
}
外观模式稳定的部分是多个类之间的协作关系Computer
即它们之间是如何协作的,易变的部分是各个内部类具体的实现CPU/Memory/Disk/Card
。如:更换cpu或者硬盘是不会影响电脑的。