Facade(fe‘saad)模式,是一个没有固定类图的模式。
因为他要解决的是屏蔽一个子系统的对外的复杂性问题。
facade模式一般单独定义一个门面类(类似数据库中的view?),通过引用不同内部对象,并定义新的接口来实现。
本身比较简单,主要也是架构层面的考虑,跟之前一些模式比较,他应该是在更大的层面会应用到。
太简单了,贴出来占篇幅^_^
/**
* @file test_facade.h
* @author itegel
* @date 2014/04/04 14:39:19
* @brief
*
**/
#ifndef __TEST_FACADE_H_
#define __TEST_FACADE_H_
#include <iostream>
class A{
public:
A(){}
void FunA(){
std::cout<<"FunA()"<<std::endl;
}
};
class B{
public:
B(){}
void FunB(){
std::cout<<"FunB()"<<std::endl;
}
};
class C{
public:
C(A a, B b):a_(a),b_(b){
}
void DoAandB(){
a_.FunA();
b_.FunB();
}
void DoA(){
a_.FunA();
}
private:
A a_;
B b_;
};
#endif //__TEST_FACADE_H_
/**
* @file test_facade.cpp
* @author itegel
* @date 2014/04/04 14:43:19
* @brief
*
**/
#include "test_facade.h"
int main(){
A a;
B b;
C c(a, b);
std::cout<<"Do A and B:"<<std::endl;
c.DoAandB();
std::cout<<"Do A:"<<std::endl;
c.DoA();
return 0;
}
output:
Do A and B:
FunA()
FunB()
Do A:
FunA()