【软件设计师中级】设计模式之外观模式学习笔记(c++)

 本文适合新手和小白

目录

1、facade

(1)意图

(2)结构

(3)适用性

2、代码实现


1、facade

(1)意图

为子系统中的一组接口提供一个一致的界面,facade模式定义一个高层接口,这个接口使得这一子系统更容易使用。

(2) 结构

 教科书写画的比较简单,可以看的出就是facade在一个复杂得子系统中做几个关联即可。

facade知道哪些子系统负责处理请求,将客户的请求代理给适当的子系统对象。

subsystem classes 实现子系统的功能;处理有facade对象指派的任务;没有facade的任何相关信息,既没有facade的指针。

(3)适用性

1、为一个复制的子系统提供一个简单接口,子系统往往因为不断演化而变得越来越复查。大多数模式使用时会产生更小的类,这使得子系统更具有可重用性,也更容易对子系统进行订制,但也可以哪些不需要定制子系统用户带来一些使用上的困难。

2、客户程序与抽象类的和实现部分存在很大依赖性

3、当需要构建一个层次接口子系统时,使用facade模式定义子系统每层入口点,如果子系统之间是相互依赖的,则可以让他们仅通过facade通信,从而简化了他们的依赖关系。

2、代码实现

假如我们把一个复杂系统分成两个(one和two),那么我们只需要让一个facade完成这2个系统全部操作就行 ,facade定义一个关联即可

#include<iostream>
using namespace std;
class one{//复查子系统one  没有关于facade的指针
    public:
        void operation(){
        cout<<"one中一个非常复查的运行"<<endl;//
        }

};
class two{///复查子系统two  没有关于facade的指针
    public:
        void operation(){
        cout<<"two中一个非常复查的运行"<<endl;
        }

};

class facade{
    public:
        facade(){//通过facade的构造函数 完成对one与two两个子系统的定义和构造
           a=new one;
           b=new two;
        }

        void run(){//定一个方法对所有子系统实现运行
           a->operation();
           b->operation();
        
        }
        ~facade(){
        delete a;
        delete b;
        }
    private://关联所有的系统部分
        one *a;//关联系统a
        two *b;//关联系统b
};

int main(){
    facade *p=new facade;
    p->run();
    delete p;
return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值