需求分析:办办房产证或注册一家公司要同多个部门联系,有一个综合部门能解决一切手续问题多好。
外观模式:通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。
核心思想:主要是定义了一个高层接口。它包含了对各个子系统的引用,客户端可以通过它访问各个子系统的功能。现在来分析其基本结构和实现方法。
主要角色:
- 外观角色:为多个子系统对外提供一个共同的接口。
- 子系统角色:实现系统的部分功能,客户可以通过外观角色访问它。
- 客户角色:通过一个外观角色访问各个子系统的功能。
具体案例:
小码路今年买彩票中奖500万,准备在北京买套房子,不对这些钱还像还是不够,小码路又向七大姑,八大姨借了下,这下终于到了买房子的时候了。下面那么多手续,太麻烦,小码路委托给了房产中介。
第一步:子系统角色
代码语言:javascript复制// 子系统角色
//实现众多手续
class DengJi
{
public:
DengJi(){}
void DJ()
{
cout<<"小码路登记了个人购房信息!"<<endl;
}
};
class GuJia
{
public:
void GJ()
{
cout<<"这套房子交易金额800万人民币!"<<endl;
}
};
class GongZheng
{
public:
void GZ()
{
cout<<"这套房子已经合法公正交易!"<<endl;
}
};
class FangShui
{
public:
void FS()
{
cout<<"小码路需要支付80万元的交易税额!"<<endl;
}
};
第二步:外观角色
代码语言:javascript复制//外观角色
//房产角色,定义众多手续的接口,客户通过此中介办理各种手续
class ZhongJie
{
public:
void JiaoYi()
{
dj->DJ();
gj->GJ();
gg->GZ();
fs->FS();
cout<<"交易完成,小码路获得房子!"<<endl;
}
private:
DengJi *dj=new DengJi();
GuJia *gj=new GuJia();
GongZheng *gg=new GongZheng();
FangShui *fs=new FangShui();
};
第三步:客户角色
代码语言:javascript复制#include "c.h"
int main()
{
ZhongJie *zj=new ZhongJie();
zj->JiaoYi();
return 0;
}
结果显示: