• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C++设计模式编程中Facade外观模式的使用实例解析

C++设计模式编程中Facade外观模式的使用实例解析

作者:梦在天涯 字体:[增加 减小] 来源:互联网 时间:2017-05-28

梦在天涯 通过本文主要向大家介绍了设计模式c++,c++设计模式pdf,大话设计模式c++,c++ qt设计模式,c++设计模式视频教程等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

外观模式提供了一个统一的接口,用来访问子系统的一群接口。外观定义了一个高层接口,让子系统更容易使用。外观模式让接口变得简单,简化了子系统的接口。外观模式十分简单,简而言之,就是简化你的类的接口,将一系列的复杂的过程封装到内部,对外只提供最简单的接口。
结构图:

201639165609829.jpg (545×313)

适用场景:
当你要为一个复杂子系统提供一个简单接口时。子系统往往因为不断演化而变得越来越复杂。大多数模式使用时都会产生更多更小的类。这使得子系统更具可重用性,也更容易对子系统进行定制,但这也给那些不需要定制子系统的用户带来一些使用上的困难。Facade可以提供一个简单的缺省视图,这一视图对大多数用户来说已经足够,而那些需要更多的可定制性的用户可以越过Facade层。
客户程序与抽象类的实现部分之间存在着很大的依赖性。引入Facade将这个子系统与客户以及其他的子系统分离,可以提高子系统的独立性和可移植性。
当你需要构建一个层次结构的子系统时,使用Facade模式定义子系统中每层的入口点。如果子系统之间是相互依赖的,你可以让它们仅通过Facade进行通讯,从而简化了它们之间的依赖关系。

实现:

代码片断 1:Facade.h

//Facade.h
#ifndef _FACADE_H_
#define _FACADE_H_
class Subsystem1{
  public:
  Subsystem1();
  ~Subsystem1();
  void Operation();
  protected:
  private:
};
class Subsystem2{
  public:
  Subsystem2();
  ~Subsystem2();
  void Operation();
  protected:
  private:
};
class Facade{
  public:
  Facade();
  ~Facade();
  void OperationWrapper();
  protected:
  private:
  Subsystem1* _subs1;
  Subsystem2* _subs2;
};
#endif //~_FACADE_H_
</div>

代码片断 2:Facade.cpp

//Facade.cpp
#include "Facade.h"
#include <iostream>
using namespace std;
Subsystem1::Subsystem1(){
}
Subsystem1::~Subsystem1(){
}
void Subsystem1::Operation(){
  cout<<"Subsystem2 operation.."<<endl;
}
Subsystem2::Subsystem2(){
}
Subsystem2::~Subsystem2(){
}
void Subsystem2::Operation(){
  cout<<"Subsystem2 operation.."<<endl;
}
Facade::Facade(){
  this->_subs1 = new Subsystem1();
  this->_subs2 = new Subsystem2();
}
Facade::~Facade(){
  delete _subs1;
  delete _subs2;
}
void Facade::OperationWrapper(){
  this->_subs1->Operation();
  this->_subs2->Operation();
}
</div>

代码片断 3:main.cpp

//main.cpp
#include "Facade.h"
#include <iostream>
using namespace std;
int main(int argc,char* argv[]){
  Facade* f = new Facade();
  f->OperationWrapper();
  return 0;
}
</div>

再来看一个例子:

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 深入理解C++之策略模式
  • C++设计模式编程中简单工厂与工厂方法模式的实例对比
  • 解析C++编程中如何使用设计模式中的状态模式结构
  • 详解C++设计模式编程中对访问者模式的运用
  • C++设计模式编程之Flyweight享元模式结构详解
  • 详解C++设计模式编程中责任链模式的应用
  • 深入剖析设计模式中的组合模式应用及在C++中的实现
  • 设计模式中的备忘录模式解析及相关C++实例应用
  • 深入解析设计模式中的适配器模式在C++中的运用
  • 全面解析设计模式中的建造者模式及相关C++实现

相关文章

  • 2017-05-28深入探讨:main函数执行完毕后,是否可能会再执行一段代码?
  • 2017-05-28VisualStudio 使用Visual Leak Detector检查内存泄漏
  • 2017-05-28C语言初学者代码中的常见错误与问题
  • 2017-05-28C++在C语言基础之上增强的几个实用特性总结
  • 2017-05-28详解C语言的结构体中成员变量偏移问题
  • 2017-05-28tcp socket客户端和服务端示例分享
  • 2022-04-30C语言运算符的优先级和结合性
  • 2017-05-28C语言求幂计算的高效解法
  • 2017-05-28C++事件处理中的__hook与__unhook用法详解
  • 2017-05-28C语言小程序 如何判断三角型类型

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C语言中对字母进行大小写转换的简单方法
    • 解析shell排序的实现代码
    • C++实现的归并排序算法详解
    • c语言网络编程-标准步骤(改进版)
    • c++中typename和class的区别介绍
    • C++中简单读写文本文件的实现方法
    • 详解C语言中的getgrgid()函数和getgrnam()函数
    • C语言逻辑运算符知识整理
    • 利用C/C++二进制读写png文件的方法示例
    • tc编译的dos程序和vc编译的win32控制台程序的异同

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有