设计模式:外观模式(C++)【颜值很重要】
2018-03-13 00:09
204 查看
外观模式介绍
外观 外观 从名字都可以看出来对 颜值很看重呗。21世纪都是刷脸的时代,当然颜值很重要。那么对于我们写的代码 也一样,也需要好看的颜值,记得有本书叫 《代码整洁之道》 说的就是相关的内容。在我们的设计模式中呀,我们给用户呈现的应该是一个简单且统一的接口,我们不需要把接口实现的细节让用户知道,当然用户也不想知道你是怎么实现 。这也就是我们设计模式中的最少知道原则,又被称为 迪米特法则。那我们的外观模式呢就是围绕这个进行展开的。外观模式,为子系统中的一组接口提供一个一致的界面(对外提供),此模式定义了一个高层接口,这个接口使的这一子系统更加容易使用。下面看看外观模式的标准模型图。
外观模式模型图
外观模式案例
我们就用一个智能家居系统举例吧,智能家居系统 有KTV模式、观影模式,这是对外也就是给客户提供的。具体到KTV模式需要运行一些子系统,比如说 什么 灯光系统、音响系统、麦克风系统呀 这些 统统 没必要让用户知道和操作,我们的外观类具体进行负责 对客户对外就提供简洁的界面,内部自己实现那些子系统的调用。智能家居代码
#define _CRT_SECURE_NO_WARNINGS#include <iostream>
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++设计模式——外观模式
- 设计模式C++实现(7)——外观模式、组合模式
- c++设计模式-----Facade外观模式
- C++设计模式之十:Facade(外观)
- 我所理解的设计模式(C++实现)——外观模式(Facade Pattern)
- c++设计模式--外观模式
- c++设计模式:外观模式(Facade Pattern)
- C++设计模式——外观模式
- c++ 设计模式之外观模式
- c++设计模式之外观模式
- 通过C++程序示例理解设计模式中的外观模式
- 设计模式C++实现(7)——外观模式、组合模式
- 设计模式C++实现八:外观模式
- c++ 设计模式之 外观模式
- 设计模式C++实现(7)——外观模式、组合模式
- 设计模式--外观模式实现C++
- C++设计模式之外观模式(Facade)
- 设计模式C++实现——外观模式
- C++设计模式九--FacadePattern(外观模式)
- 设计模式---外观模式(C++实现)