外观模式更像是公司中的管理模式。外观类就像是领导者,分配管理着下属的工作。
#pragma once
#include <iostream>
#define SAFE_DELETE(ptr) if(ptr!=NULL){delete ptr; ptr = NULL;}
using namespace std;
//下属类
class Member_A
{
public:
void CanDo() { cout << "前端开发a" << endl; }
};
class Member_B
{
public:
void CanDo() { cout << "服务器开发b" << endl; }
};
class Member_C
{
public:
void CanDo() { cout << "数据库开发c" << endl; }
};
//外观类(领导者)
class Facade
{
private:
//下属
Member_A a;
Member_B b;
Member_C c;
public:
//前端开发需求
void Html_Task() { a.CanDo(); }
//后台开发需求
void Server_Task() { b.CanDo(); c.CanDo(); }
};
int main()
{
Facade f;
//接到了前段需求
f.Html_Task();
//接到了服务器需求
f.Server_Task();
return 0;
}
优点
(1)实现了子系统与客户端之间的松耦合关系。 (像宏定义)
(2)客户端屏蔽了子系统组件,减少了客户端所需处理的对象数目,并使得子系统使用起来更加容易。