C++设计模式之外观模式(Facade)

 更新时间:2018年03月28日 10:40:33   作者:chencarl  
这篇文章主要为大家详细介绍了C++设计模式之外观模式(Facade),具有一定的参考价值,感兴趣的小伙伴们可以参考一下

外观模式应该是程序员最下意识用的一种模式,比如我们习惯性的对复杂系统做一个封装接口。外观模式其本质是对一堆复杂对象和应用的接口抽象,对它们进行封装隔离,对于调用者来说只需要关系接口的实现,而不需要知道内部有哪些对象和调用。

作用

为模块的一组接口提供一致的界面,定义了一个高层接口,这个接口使得这一模块更加容易使用。

类视图

实现

//复杂或多对象
class objectOne
{
  public void operator() 
  {
    cout<<"operator one\n";
  }
}
class objectTwo
{
  public void operator() 
  {
    cout<<"operator two\n";
  }
}
class objectThree
{
  public void operator() 
  {
    cout<<"operator three\n";
  }
}
class objectFour
{
  public void operator() 
  {
    cout<<"operator four\n";
  }
}
//外观实现
class Facade
{
  objectOne one;
  objectTwo two;
  objectThree three;
  objectFour four;

  public Facade() 
  {
    obj1 = new objectOne();
    obj2 = new objectTwo();
    obj3 = new objectThree();
    obj4 = new objectFour();
  }
  public void MethodA() 
  {
    cout<<" Fun A()-----\n");
    obj1.operator();
    obj2.operator();
    obj3.operator();
    obj4.operator();
  }
  public void MethodB() 
  {
    cout<<" Fun B()-----\n");
    obj4.operator();
    obj3.operator();
    obj2.operator();
    obj1.operator();
  }
}
//调用
void main() 
{
  Facade facade = new Facade();
  facade.MethodA();
  facade.MethodB();
}


应用场景

  • 构建上下层次的模块时,如果上下进行调用,则会出现强耦合,用外观模式实现上下级模块的接口,简化相互调用的交叉,降低上下层的耦合度;
  • 在多个复杂模块相互协作工作时,向上用外观类提炼出高层接口,对外隐藏其内部的实现并隔离变化;
  • 对单独模块或者对复杂模块的封装,提炼出外观类进行封装访问,解耦合。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 详解c++ 静态成员变量

    详解c++ 静态成员变量

    这篇文章主要介绍了c++ 静态成员变量的相关资料,帮助大家更好的理解和学习c++,感兴趣的朋友可以了解下
    2020-09-09
  • C语言实现拼图游戏

    C语言实现拼图游戏

    这篇文章主要为大家详细介绍了C语言实现拼图游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • C++实现希尔排序算法实例

    C++实现希尔排序算法实例

    大家好,本篇文章主要讲的是C++实现希尔排序算法实例,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2022-01-01
  • C++实现分水岭算法(Watershed Algorithm)

    C++实现分水岭算法(Watershed Algorithm)

    这篇文章主要为大家详细介绍了C++实现分水岭算法Watershed Algorithm,具有一定的参考价值,感兴趣的小伙伴们可以参考一 下
    2018-01-01
  • VS2019创建c++动态链接库dll与调用方法实践

    VS2019创建c++动态链接库dll与调用方法实践

    动态链接库是一个包含可由多个程序同时使用的代码和数据的库,本文主要介绍了VS2019创建c++动态链接库dll与调用方法,具有一定的参考价值,感兴趣的可以了解一下
    2024-06-06
  • 基于make命令与makefile文件详解

    基于make命令与makefile文件详解

    下面小编就为大家分享一篇基于make命令与makefile文件详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • C语言 文件操作解析详解及实例代码

    C语言 文件操作解析详解及实例代码

    这篇文章主要介绍了C语言 文件操作解析详解及实例代码的相关资料,需要的朋友可以参考下
    2016-11-11
  • 详解C++编程中的析构函数

    详解C++编程中的析构函数

    这篇文章主要介绍了C++编程中的析构函数,是C++入门学习中的基础知识,需要的朋友可以参考下
    2015-09-09
  • C++ LeetCode1812判断国际象棋棋盘格子颜色

    C++ LeetCode1812判断国际象棋棋盘格子颜色

    这篇文章主要为大家介绍了C++ LeetCode1812判断国际象棋棋盘格子颜色, 有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • 详解C++中的万能头文件

    详解C++中的万能头文件

    C++万能头文件它是一个包含了每一个标准库的头文件,接下来通过本文给大家介绍C++中的万能头文件及优缺点,需要的朋友可以参考下
    2023-02-02

最新评论