1.外观模式简介
- 英文名称
Facade - 主要目的
为子系统中的一组接口提供一个一致的界面。外观模式定义了一个高层接口,这个接口使得这一系统更加容易使用。 - 使用场景
1.当你要为一个复杂子系统提供一个简单接口时;
2.客户程序与抽象类的实现部分之间存在很大的依赖性时;
3.当你需要构建一个层次结构的子系统时,使用外观模式可以定义子系统中每层的入口点。
2.外观模式代码示例
- 测试平台
1.开发语言:C++
2.开发工具:VS2015
3.操作系统:Win7 X64 代码说明
1.PreProcesser、PlateLocation、PlateSegmation、PlateRecognition–原有的复杂子系统类;
2.PlateAlgFacade–外观类,对原有复杂子系统进行包装。注意:
1.本例用外观模式来对原有的复杂的车牌识别子系统进行包装;
2.通过外观模式,我们调用原有的子系统更简单了,为用户提供了极大的方便性。具体代码
#include <iostream>
using namespace std;
//传统的车牌识别算法分为以下四个步骤:预处理、车牌定位、车牌分割、字符识别
//预处理类
class PreProcesser
{
public:
void PreProcess() //预处理
{
cout << "预处理" << endl;
}
};
//车牌定位
class PlateLocation
{
public:
void PlateLocate() //车牌定位
{
cout << "车牌定位" << endl;
}
};
//车牌分割
class PlateSegmation
{
public:
void PlateSegmate() //车牌分割
{
cout << "车牌分割" << endl;
}
};
//车牌识别
class PlateRecognition
{
public:
void PlateRecog() //字符识别
{
cout << "字符识别" << endl;
}
};
//外观类,为车牌识别子系统提供一个高层接口
class PlateAlgFacade
{
public:
void PlateRecog() //车牌识别
{
PreProcesser preProcesser;
PlateLocation locater;
PlateSegmation seger;
PlateRecognition recer;
preProcesser.PreProcess();
locater.PlateLocate();
seger.PlateSegmate();
recer.PlateRecog();
}
};
int main()
{
//车牌识别
PlateAlgFacade plateAlger;
plateAlger.PlateRecog();
getchar();
return 0;
}
- 输出结果
栏目导航
上一篇:设计模式学习笔记(C++实现)(十)–装饰模式
下一篇:设计模式学习笔记(C++实现)(十二)–享元模式
参考文献:
1.《设计模式:可复用面向对象软件的基础》