zoukankan      html  css  js  c++  java
  • Facade 模式

    在软件系统开发中经常回会遇到这样的情况,你实现了一些接口(模块),而这些接口(模块)都分布在几个类中(比如 A和 B、C、D) :A中实现了一些接口,B 中实现一些接口(或者 A代表一个独立模块,B、C、D代表另一些独立模块) 。然后你的客户程序员 (使用你设计的开发人员) 只有很少的要知道你的不同接口到底是在那个类中实现的,绝大多数只是想简单的组合你的 A-D的类的接口,他并不想知道这些接口在哪里实现的。这时我们就要用到Facade 模式,Facade 模式在高层提供了一个统一的接口。

     1 //////////////////Facade.h////////////////////////////////////////////////////////
     2 #pragma once
     3 class Subsystem1
     4 {
     5 public:
     6     ~Subsystem1();
     7     Subsystem1();
     8     void operation();
     9 protected:
    10 private:
    11 };
    12 
    13 class Subsystem2
    14 {
    15 public:
    16     ~Subsystem2();
    17     Subsystem2();
    18     void operation();
    19 protected:
    20 private:
    21 };
    22 
    23 class Facade
    24 {
    25 public:
    26     ~Facade();
    27     Facade();
    28     void OperationWrapper();
    29 protected:
    30 private:
    31     Subsystem1* _Subs1 ;
    32     Subsystem2* _Subs2 ;
    33 };
     1 ///////////Facade.cpp///////////////////////////////////////////////////////////////
     2 #include "Facade.h"
     3 #include <iostream>
     4 using namespace std;
     5 Subsystem1::Subsystem1()
     6 {
     7 
     8 }
     9 Subsystem1::~Subsystem1()
    10 {
    11 
    12 }
    13 void Subsystem1::operation()
    14 {
    15     cout<<"Subsystem1 operation"<<endl;
    16 }
    17 Subsystem2::Subsystem2()
    18 {
    19 
    20 }
    21 
    22 Subsystem2::~Subsystem2()
    23 {
    24 
    25 }
    26 
    27 void Subsystem2::operation()
    28 {
    29     cout<<"Subsystem2 operation"<<endl;
    30 }
    31 
    32 Facade::Facade()
    33 {
    34     this->_Subs1 = new Subsystem1();
    35     this->_Subs2 = new Subsystem2();
    36 }
    37 
    38 Facade::~Facade()
    39 {
    40     delete _Subs1;
    41     delete _Subs2;
    42 }
    43 
    44 void Facade::OperationWrapper()
    45 {
    46     this->_Subs1->operation();
    47     this->_Subs2->operation();
    48 }
     1 //////////main.cpp////////////////////////////////////////////////////////////////
     2 #include "Facade.h"
     3 #include <iostream>
     4 int main()
     5 {
     6     Facade* fa = new Facade();
     7     fa->OperationWrapper();
     8     system("pause");
     9     return 0;
    10 }
  • 相关阅读:
    《基于UML的电子病案管理系统的设计》文献阅读随笔
    《暗时间》读书笔记
    《基于物联网技术的无纸化电子病案管理系统设计与应用》文献阅读随笔
    文献随笔目录
    C语言程序设计第一次作业
    python基础 day24 面向对象——封装
    python基础 day23 面向对象相关
    python基础 day22 面向对象初识
    python基础 day21 re模块及shutil、logging模块
    python基础 day20 正则表达式及re模块及装饰器
  • 原文地址:https://www.cnblogs.com/csxcode/p/3726591.html
Copyright © 2011-2022 走看看