文章目录
结构型模式----外观模式
外观模式为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问
模式结构与实现
模式的结构
- 外观角色:为多个子系统对外提供了一个共同的接口
- 子系统角色:实现系统的部分功能,客户可以通过外观角色访问其资源
- 客户角色:通过一个外观角色访问子系统的功能
外观模式UML类图
优点
- 降低了子系统和客户端的耦合度
- 对用户屏蔽了子系统组件
缺点
- 不能很好的限制客户使用子系统类
- 增加新的子系统可能需要修改外观类或客户端的源代码,违反了“开闭原则”
外观模式的应用场景
- 拥有多个子系统的复杂系统构建时,外观模式可以为系统设计一个简单的接口供外界访问
- 当客户端和多个子系统之间有很大联系时,引入外观模式可以将他们分离,从而提高子系统的独立性和可移植性
外观模式实例
#include <iostream>
using namespace std;
class system1
{
public:
void run()
{
cout << "子系统一启动" << endl;
}
};
class system2
{
public:
void run()
{
cout << "子系统二启动" << endl;
}
};
class system3
{
public:
void run()
{
cout << "子系统三启动" << endl;
}
};
class system4
{
public:
void run()
{
cout << "子系统四启动" << endl;
}
};
class Faced
{
public:
Faced()
{
pSystem1 = new system1;
pSystem2 = new system2;
pSystem3 = new system3;
pSystem4 = new system4;
}
void work()
{
pSystem1->run();
pSystem2->run();
pSystem3->run();
pSystem4->run();
}
private:
system1* pSystem1;
system2* pSystem2;
system3* pSystem3;
system4* pSystem4;
};
int main()
{
Faced* face = new Faced;
face->work();
system("pause");
return 0;
}