前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >结构型之外观模式C++实现

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

作者头像
用户9831583
发布2022-06-16 15:12:27
1780
发布2022-06-16 15:12:27
举报
文章被收录于专栏:码出名企路

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

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

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

主要角色:

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

结果显示:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码出名企路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档