程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++設計形式編程中Facade外不雅形式的應用實例解析

C++設計形式編程中Facade外不雅形式的應用實例解析

編輯:關於C++

C++設計形式編程中Facade外不雅形式的應用實例解析。本站提示廣大學習愛好者:(C++設計形式編程中Facade外不雅形式的應用實例解析)文章只能為提供參考,不一定能成為您想要的結果。以下是C++設計形式編程中Facade外不雅形式的應用實例解析正文


外不雅形式供給了一個同一的接口,用來拜訪子體系的一群接口。外不雅界說了一個高層接口,讓子體系更輕易應用。外不雅形式讓接口變得簡略,簡化了子體系的接口。外不雅形式非常簡略,簡而言之,就是簡化你的類的接口,將一系列的龐雜的進程封裝到外部,對外只供給最簡略的接口。
構造圖:

實用場景:
當你要為一個龐雜子體系供給一個簡略接口時。子體系常常由於赓續演變而變得愈來愈龐雜。年夜多半形式應用時都邑發生更多更小的類。這使得子體系更具可重用性,也更輕易對子體系停止定制,但這也給那些不須要定制子體系的用戶帶來一些應用上的艱苦。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_

代碼片段 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();
}

代碼片段 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;
}

再來看一個例子:

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved