外观模式C++实现

来源:互联网 发布:sql server 基础语法 编辑:程序博客网 时间:2024/05/17 07:18

外观模式其实定义了一个高层接口,该接口为子系统中的一组接口提供一个一致的界面,使得这一子系统更加容易使用。(不关心底层函数的实现)

比如,一个下班回家的动作:打卡,乘坐交通工具,拿钥匙开门。

我们可以把这个下班回家封装成一个高层接口,对外隐藏下班回家过程中的子动作(打开,乘坐工具,开门)。

又比如,模块化编程中,对客户提供一个初始化接口Init(),然后该Init()接口里去做N个模块的初始化。对用户来说,Init就是一个高层接口,只要调用这个接口就可以初始化N的模块。



#include <iostream>class SubWork1{public:void start_work(){         std::cout<< "SubWork1 start work" <<std::endl;}};class SubWork2{public:void start_work(){         std::cout<< "SubWork2 start work" <<std::endl;}};class SubWork3{public:void start_work(){         std::cout<< "SubWork3 start work" <<std::endl;}};class Work{public:void start_work(){         std::cout<< "start work" <<std::endl; SubWork1 work1; work1.start_work(); SubWork2 work2; work2.start_work(); SubWork3 work3; work3.start_work();}};int main(){Work work;work.start_work();return 0;}





外观模式的优点

1.为一个复杂子系统提供一个简单接口。

2.提高子系统的独立性。

3.松散耦合

外观模式松散了客户端与子系统的耦合关系,让子系统内部的模块能更容易扩展和维护,
4.易用 

 外观模式让子系统更加易用,客户端不再需要了解子系统内部的实现,也不需要跟众多子系统内部的模块进行交互,只需要跟外观交互就可以了,相当于外观类为外部客户端使用子系统提供了一站式服务。

5.更好的划分访问层次

更好的划分访问的层次。有些方法是对系统外的,有些方法是系统内部使用的。把需要暴露给外部的功能集中到外观中,这样既方便客户使用,也很好的隐藏了内部的细节。