C++设计模式浅识外观模式

原创 2016年06月01日 06:54:47

外观模式(Facade):为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

两大角色:

  1. 外观类Facade: 知道哪些子系统类负责处理请求,将客户的请求代理给适当的子系统对象。
  2. 子系统集合SubSystem: 实现子系统的功能,处理Facade对象指派的任务。注意:子类没有Facade的任何信息,即没有对Facade对象的引用。

本文以购买基金为例,客户只需买入卖出基金(Facade),而其中的股票1、股票2、股票3等(SubSystem)操作由基金公司负责处理。

测试用例:

int main(){
    Fund fund;//基金对象(Facade)
    fund.fundBuy();//stock1 buy stock2 buy stock3 buy
    fund.fundSell(); //stock1 sell stcok2 sell stock3 sell

    return 0;
}

外观模式实现:

//子系统不知道Facade的任何信息
//股票1号
class Stock1{
public:
    void sell(){
        std::cout << "stock1 sell\n";
    }
    void buy(){
        std::cout << "stock1 buy\n";
    }
};
//股票2号
class Stock2{
public:
    void sell(){
        std::cout << "stcok2 sell\n";
    }
    void buy(){
        std::cout << "stock2 buy\n";
    }
};
//股票3号
class Stock3{
public:
    void sell(){
        std::cout << "stock3 sell\n";
    }
    void buy(){
        std::cout << "stock3 buy\n";
    }
};

//基金类是Facade
class Fund{
public:
    Stock1 stock1;
    Stock2 stock2;
    Stock3 stock3;
    void fundSell(){
        stock1.sell();
        stock2.sell();
        stock3.sell();
    }
    void fundBuy(){
        stock1.buy();
        stock2.buy();
        stock3.buy();
    }
};

何时使用外观模式?

  1. 在设计初期,应该要有意识的将不同的两个层分离。
  2. 在开发阶段,子系统往往因为不断的重构演化而变得越来越复杂。
  3. 在维护一个遗留的大型系统时,可以将原系统高度复杂的代码或设计粗糙的代码以比较简单清晰的接口让新系统与Facade对象交互。
版权声明:本文为博主原创文章,转载请注明出处。

相关文章推荐

最常用的设计模式---外观模式(C++实现)

外观模式:提供了一个统一的接口,用来访问子系统的一群接口。外观定义了一个高层接口,让子系统更容易使用。目地:让接口变得简单,是为了简化子系统的接口。

c++设计模式之外观模式

迪米特法则:如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。 如果其中一个类需要调用另一个类的某一个方法的话,就可以通过第三者转发 迪米特法则的首先强调...

C++设计模式7--外观模式--The Client don't want to know

1基本信息 共有两类适配器模式: 对象适配器模式 -- 在这种适配器模式中,适配器容纳一个它包裹的类的实例。在这种情况下,适配器调用被包裹对象的物理实体。 类适配器模式 -- 这种适配器模式下,适...

我所理解的设计模式(C++实现)——外观模式(Facade Pattern)

概述 想想我们小时候玩的四驱车,里面的构造很复杂,马达,舵机,电池组等等,而我们控制它却非常简单,只要打开电池开关,他就可以跑。我们其实不用知道它里面是如何工作,只要知道拨动开关它就可以工作就行...

C++设计模式九--FacadePattern(外观模式)

C++ 设计模式 FacadePattern 外观模式

23种设计模式C++实例之外观模式

为各个不同的类提供统一的接口,然后通过外观模式将其组合起来,对外提供一个统一的接口。 #include using namespace std; /* * 外观模式:将子系统中的...

我所理解的设计模式(C++实现)——外观模式(Facade Pattern)

概述 想想我们小时候玩的四驱车,里面的构造很复杂,马达,舵机,电池组等等,而我们控制它却非常简单,只要打开电池开关,他就可以跑。我们其实不用知道它里面是如何工作,只要知道拨动开关它就可以工作就行了,...

C++设计模式----外观模式

由遇到的问题引出外观模式 举一个生活中的小例子,大凡开过学或者毕过业的都会体会到这样一种郁闷:你要去 n个地方办理 n 个手续(现在大学合并后就更加麻烦,因为可能那 n 个地方都隔的比较远)。 ...

c++设计模式之外观模式

外观模式 外观模式(Facade),为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。 同时,客户端不需要与子系统直接交流,这样做遵守了迪米特原则———...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)