设计模式-结构型-外观模式-c++

本文不讨论外观模式的具体定义

外观模式就是将接口暴露出来提供给用户使用。而且暴露出来的接口通常是封装了其他多个类的方法得到的接口,因此也算是将一些方法进行整合,放到Facade类的接口行为当中。

代码:

#include<iostream>
using namespace std;

class SubSystem1
{
public:
    string operation1()const
    {
        return "SubSystem1,ready!\n";
    }
    string operation2()const
    {
        return "SubSystem1,go!\n";
    }
};
class SubSystem2
{
public:
    string operation1()const
    {
        return "SubSystem2,ready!\n";
    }
    string operation2()const
    {
        return "SubSystem2,go!\n";
    }
};
class Facade
{
protected:
    SubSystem1* sub1;
    SubSystem2* sub2;
public:
    Facade(SubSystem1* s1=nullptr,SubSystem2* s2=nullptr)
    {
        this->sub1=s1?:new SubSystem1;
        this->sub2=s2?:new SubSystem2;
    }
    string operation()
    {
        string result="First,init system:\n";
        result+=this->sub1->operation1();
        result+=this->sub2->operation1();
        result+="Second,run system:\n";
        result+=this->sub1->operation2();
        result+=this->sub2->operation2();
        return result;
    }
    ~Facade()
    {
        delete sub1;
        delete sub2;
    }
};
/*
First,init system:
SubSystem1,ready!
SubSystem2,ready!
Second,run system:
SubSystem1,go!
SubSystem2,go!
*/
int main()
{
    SubSystem1*s1=new SubSystem1;
    SubSystem2*s2=new SubSystem2;
    Facade* f1=new Facade(s1,s2);
    cout<<f1->operation();
    delete f1;
    return 0;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值