今天天气晴朗,来学习一下外观模式,先看外观模式C++代码的实现。
#include <iostream>
#include <string>
#include <list>
#include <math.h>
#include <stdlib.h>
using namespace std;
//外观模式
class SubOne
{
public:
void MethOne()
{
cout << "SubOne" << endl;
}
};
class SubTwo
{
public:
void MethTwo()
{
cout << "SubTwo" << endl;
}
};
class SubThree
{
public:
void MethThree()
{
cout << "SubThree" << endl;
}
};
class Facade
{
public:
Facade()
{
one = new SubOne();
two = new SubTwo();
three = new SubThree();
}
void MethodA()
{
one->MethOne();
two->MethTwo();
cout << "Facade MethodA" << endl;
}
void MethodB()
{
two->MethTwo();
three->MethThree();
cout << "Facade MethodB" << endl;
}
private:
SubOne *one;
SubTwo *two;
SubThree *three;
};
int main()
{
Facade *facede = new Facade();
facede->MethodA();
facede->MethodB();
delete facede;
return 0;
}
外观模式定义:为子系统的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
上面的代码中,Facade就是外观模式对应的类,由于Facade的出现,客户端根本不指定SubOne,SubTwo,SubThree这三个子类的存在,而直接和SubThree打交道,这就使客户端本来要和三个子类打交道变成了只和Facade打交道,降低了耦合度,减少了它们之间的依赖。