概述
外观模式:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
优点: 1、减少系统相互依赖。 2、提高灵活性。 3、提高了安全性。
缺点:不符合开闭原则,如果要改东西很麻烦,继承重写都不合适。
应用场景
降低访问复杂系统的内部子系统时的复杂度,简化客户端与之的接口
一般步骤
1.写多个子类且每个子类都有自己的方法;
class SubSystemOne
{
public:
void MethonOne()
{
cout << "子系统方法一" << endl;
}
};
class SubSystemTwo
{
public:
void MethonTwo()
{
cout << "子系统方法二" << endl;
}
};
2.另写一个外观类,实例化多个子类,且实现多个子类的方法组合。
class Facade // 外观类-封装了子系统的接口
{
private:
SubSystemOne *One;
SubSystemTwo *Two;
public:
Facade()
{
One = new SubSystemOne();
Two = new SubSystemTwo();
}
void MethonA()
{
cout << endl << "方法组A" << endl;
//...
}
void MethonB()
{
cout << endl << "方法组B" << endl;
//...
}
};
具体实例完整代码
//08Facade.cpp
#include <iostream>
using namespace std;
class SubSystemOne
{
public:
void MethonOne()
{
cout << "子系统方法一" << endl;
}
};
class SubSystemTwo
{
public:
void MethonTwo()
{
cout << "子系统方法二" << endl;
}
};
class SubSystemThree
{
public:
void MethonThree()
{
cout << "子系统方法三" << endl;
}
};
class SubSystemFour
{
public:
void MethonFour()
{
cout << "子系统方法四" << endl;
}
};
class Facade // 外观类-封装了子系统的接口
{
private:
SubSystemOne *One;
SubSystemTwo *Two;
SubSystemThree *Three;
SubSystemFour *Four;
public:
Facade()
{
One = new SubSystemOne();
Two = new SubSystemTwo();
Three = new SubSystemThree();
Four = new SubSystemFour();
}
void MethonA()
{
cout << endl << "方法组A" << endl;
One->MethonOne();
Two->MethonTwo();
Four->MethonFour();
}
void MethonB()
{
cout << endl << "方法组B" << endl;
Two->MethonTwo();
Three->MethonThree();
}
};
int main()
{
Facade *facade = new Facade();
facade->MethonA();
facade->MethonB();
return 0;
}
参考资料
《大话设计模式》
如果对你有帮助的话,记得点赞、收藏,如果有什么遗漏的或者有什么体会,请在评论告诉我,好东西记得分享 ^ _ ^