欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

C語言

當(dāng)前位置:主頁 > 軟件編程 > C語言 >

C++設(shè)計模式編程中Facade外觀模式的使用實例解析

來源:本站原創(chuàng)|時間:2020-01-10|欄目:C語言|點擊: 次

外觀模式提供了一個統(tǒng)一的接口,用來訪問子系統(tǒng)的一群接口。外觀定義了一個高層接口,讓子系統(tǒng)更容易使用。外觀模式讓接口變得簡單,簡化了子系統(tǒng)的接口。外觀模式十分簡單,簡而言之,就是簡化你的類的接口,將一系列的復(fù)雜的過程封裝到內(nèi)部,對外只提供最簡單的接口。
結(jié)構(gòu)圖:

適用場景:
當(dāng)你要為一個復(fù)雜子系統(tǒng)提供一個簡單接口時。子系統(tǒng)往往因為不斷演化而變得越來越復(fù)雜。大多數(shù)模式使用時都會產(chǎn)生更多更小的類。這使得子系統(tǒng)更具可重用性,也更容易對子系統(tǒng)進(jìn)行定制,但這也給那些不需要定制子系統(tǒng)的用戶帶來一些使用上的困難。Facade可以提供一個簡單的缺省視圖,這一視圖對大多數(shù)用戶來說已經(jīng)足夠,而那些需要更多的可定制性的用戶可以越過Facade層。
客戶程序與抽象類的實現(xiàn)部分之間存在著很大的依賴性。引入Facade將這個子系統(tǒng)與客戶以及其他的子系統(tǒng)分離,可以提高子系統(tǒng)的獨立性和可移植性。
當(dāng)你需要構(gòu)建一個層次結(jié)構(gòu)的子系統(tǒng)時,使用Facade模式定義子系統(tǒng)中每層的入口點。如果子系統(tǒng)之間是相互依賴的,你可以讓它們僅通過Facade進(jìn)行通訊,從而簡化了它們之間的依賴關(guān)系。

實現(xiàn):

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

再來看一個例子:

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有