结构型之外观模式C++实现

2022-06-16 15:12:27 浏览数 (2)

需求分析:办办房产证或注册一家公司要同多个部门联系,有一个综合部门能解决一切手续问题多好。

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

核心思想:主要是定义了一个高层接口。它包含了对各个子系统的引用,客户端可以通过它访问各个子系统的功能。现在来分析其基本结构和实现方法。

主要角色:

  1. 外观角色:为多个子系统对外提供一个共同的接口。
  2. 子系统角色:实现系统的部分功能,客户可以通过外观角色访问它。
  3. 客户角色:通过一个外观角色访问各个子系统的功能。

具体案例:

小码路今年买彩票中奖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;
}

结果显示:

0 人点赞