文章目录


结构型模式----外观模式

外观模式为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问

模式结构与实现

模式的结构

  • 外观角色:为多个子系统对外提供了一个共同的接口
  • 子系统角色:实现系统的部分功能,客户可以通过外观角色访问其资源
  • 客户角色:通过一个外观角色访问子系统的功能

外观模式UML类图

结构型模式----外观模式(C++)_类图

优点

  • 降低了子系统和客户端的耦合度
  • 对用户屏蔽了子系统组件

缺点

  • 不能很好的限制客户使用子系统类
  • 增加新的子系统可能需要修改外观类或客户端的源代码,违反了“开闭原则”

外观模式的应用场景


  1. 拥有多个子系统的复杂系统构建时,外观模式可以为系统设计一个简单的接口供外界访问
  2. 当客户端和多个子系统之间有很大联系时,引入外观模式可以将他们分离,从而提高子系统的独立性和可移植性

外观模式实例

#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;
}