Facade模式

Facade模式
 
Intention:
    为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
When:
    将一个系统划分为若干个子系统有利于降低系统的复杂性。一个常见的设计目标是是子系统之间的通信和相互依赖关系达到最小。
达到该目标的途径之一就是引入一个外观对象,它为子系统中较一般的设备提供了一个单一而简单的界面。
C++ Code Example:

//facade.h
#ifndef FACADE_H
#define FACADE_H

class Subsystem1{

public:
    Subsystem1();
    ~Subsystem1();
    void Operation();
};

class Subsystem2{

public:
    Subsystem2();
    ~Subsystem2();
    void Operation();
};

class Facade{

public:
    Facade();
    ~Facade();
    void OperationWrapper();
private:
    Subsystem1* m_subs1;
    Subsystem2* m_subs2;
};

#endif // FACADE_H

//facade.cpp
#include "facade.h"
#include <iostream>

using std::cout;
using std::endl;

Subsystem1::Subsystem1(){

}

Subsystem1::~Subsystem1(){

}

void Subsystem1::Operation(){

    cout << "Subsystem1 operation" << endl;
}

 Subsystem2::Subsystem2(){

}

 Subsystem2::~Subsystem2(){

}

void Subsystem2::Operation(){

    cout << "Subsystem2 operation" << endl;
}

Facade::Facade(){

    this->m_subs1 = new Subsystem1();
    this->m_subs2 = new Subsystem2();
}

Facade::~Facade(){

    delete m_subs1;
    delete m_subs2;
}

void Facade::OperationWrapper(){

    this->m_subs1->Operation();
    this->m_subs2->Operation();
}

//main.cpp
#include "facade.h"
#include <iostream>

using namespace std;

int main()
{
    Facade *f = new Facade();
    f->OperationWrapper();

    return 0;
}

 
Discuss:
    Facade模式在高层提供了一个统一的接口,解耦了系统,另一种模式Mediator和Facade有类似的地方,但是Mediator主要
目的是对象间访问的解耦。



 

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值