概述
目录
基本概念
代码与实例
基本概念
外观模式(Facade):为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
增加外观Facade可以提供一个简单的接口,减少它们之间的依赖;
为新系统开发一个外观Facade类,来提供设计粗糙或高度复杂的遗留代码的比较清晰简单的接口,让新系统与Facade对象交互,Facade与遗留代码交互所有复杂的工作。
刚开始学面向对象程序设计的时候,基本上都会默认采用这种方法,因为它完美的提现了依赖倒转原则和迪米特法则的思想。
UML图如下:
代码与实例
程序运行截图如下:
源码如下:
Head.h
#ifndef HEAD_H
#define HEAD_H
class SubSystemOne;
class SubSystemTwo;
class SubSystemThree;
class SubSystemFour;
class Facade{
public:
Facade();
~Facade();
void methodA();
void methodB();
void methodC();
private:
SubSystemOne *one;
SubSystemTwo *two;
SubSystemThree *three;
SubSystemFour *four;
};
class SubSystemOne{
public:
void methodOne();
};
class SubSystemTwo{
public:
void methodTwo();
};
class SubSystemThree{
public:
void methodThree();
};
class SubSystemFour{
public:
void methodFour();
};
#endif //HEAD_H
Head.cpp
#include "Head.h"
#include <iostream>
#include <string>
using namespace std;
Facade::Facade()
{
one = new SubSystemOne;
two = new SubSystemTwo;
three = new SubSystemThree;
four = new SubSystemFour;
}
Facade::~Facade()
{
delete one;
delete two;
delete three;
delete four;
}
void Facade::methodA()
{
cout << "方法组A" << endl;
one->methodOne();
two->methodTwo();
three->methodThree();
}
void Facade::methodB()
{
cout << "方法组B" << endl;
three->methodThree();
four->methodFour();
two->methodTwo();
}
void Facade::methodC()
{
cout << "方法组C" << endl;
one->methodOne();
three->methodThree();
}
void SubSystemOne::methodOne()
{
cout << "SubSystemOne::methodOne()" << endl;
}
void SubSystemTwo::methodTwo()
{
cout << "SubSystemTwo::methodTwo()" << endl;
}
void SubSystemThree::methodThree()
{
cout << "SubSystemThree::methodThree()" << endl;
}
void SubSystemFour::methodFour()
{
cout << "SubSystemFour::methodFour()" << endl;
}
main.cpp
#include "Head.h"
#include <iostream>
#include <string>
using namespace std;
int main(int *argc, int *argv[]){
Facade *facada = new Facade;
facada->methodA();
cout << "---------------华丽分割线---------------"<< endl;
facada->methodC();
cout << "---------------华丽分割线---------------"<< endl;
facada->methodB();
delete facada;
getchar();
return 0;
}
最后
以上就是激动西牛为你收集整理的C++设计模式-外观模式基本概念代码与实例的全部内容,希望文章能够帮你解决C++设计模式-外观模式基本概念代码与实例所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复