外观模式
为子系统提供一个一致的接口,此模式定义了一个高层接口,使得子系统更加容易使用。
子系统将多个接口进行综合管理。
提供多个模块接口的统一代理。
举个栗子: 假设我们要做股票,我们就需要去学股票的知识,我们可以找基金,让其帮我们做投资。而基金就懂得各种理财知识。
此时基金对我们用户就是Facade,做股票,做期货,做货币这些子系统,Facade是对这些子系统的接口的集合。
Facade 中拥有所有子系统的对象。facade与子系统之间是组合关系。
#include <iostream>
#ifndef _DESIGN_PATTERN_FACADE_FACADE_HPP_
#define _DESIGN_PATTERN_FACADE_FACADE_HPP_
namespace design_pattern
{
class Stock
{
public:
void BuyStock()
{
std::cout << "BuyStock()" << std::endl;
}
};
class Futures
{
public:
void Transaction()
{
std::cout << "Transaction()" << std::endl;
}
};
class Funds
{
private:
Stock st;
Futures fu;
public:
void BuyStock() { st.BuyStock(); }
void Transaction() { fu.Transaction(); }
};
}
#endif // !_DESIGN_PATTERN_FACADE_FACADE_HPP_
//facade_main.cpp
#include "facade.hpp"
using namespace design_pattern;
int main()
{
Funds f;
f.BuyStock();
f.Transaction();
return 0;
}