青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

積木

No sub title

  C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
  140 Posts :: 1 Stories :: 11 Comments :: 0 Trackbacks

常用鏈接

留言簿(1)

我參與的團隊

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

轉載自: http://patmusing.blog.163.com/blog/static/135834960201002310460918/


假設我們需要開發一個坦克模擬系統用于模擬坦克在各種作戰環境中的行為,其中坦克系統由引擎、車輪、控制器和火炮等各子系統構成。

12. C++實現Structural - Faccedil;ade模式 - 玄機逸士 - 玄機逸士博客

A方案的問題在于組件的客戶和組件中各種復雜的子系統有了過多的耦合,隨著外部客戶程序和個子系統的演化,這種過多的耦合面臨很多變化的挑戰。Façade設計模式則簡化外部客戶程序和系統間的交互接口,將外部客戶程序的演化和內部子系統的變化之間的依賴相互解耦。

Provide a unified interface to a set of interfaces in a subsystem. Facade defines a higher-level interface that makes the subsystem easier to use. (為子系統中的一組接口提供一個一致的界面,Façade設計模式定義了一個高層接口,這個接口使得這一子系統更加容易使用) - GoF

示例代碼:

// Facade.h

#include <iostream>

#include <vector>

using namespace std;

class Engine // 發動機子系統

{

private:

bool engineStatus;

public:

Engine()

{

engineStatus = false;

}

public:

void turn_on() // 啟動

{

engineStatus = true;

cout << "this is in method turn_on() ..." << endl;

}

void turn_off() // 關閉

{

engineStatus = false;

cout << "this is in method turn_off() ..." << endl;

}

bool get_engine_status() const // 獲取發動機狀態

{

return engineStatus;

}

};

class WheelPedrail // 履帶子系統

{

public:

void rotate() // 轉動

{

cout << "this in method rotate() ..." << endl;

}

};

class Controller // 控制子系統

{

public:

void forward() // 前進

{

cout << "this is in method forward() ..." << endl;

}

void backward() // 后退

{

cout << "this is in method backward() ..." << endl;

}

void turnright() // 右轉

{

cout << "this is in method turnright() ..." << endl;

}

void turnleft() // 左轉

{

cout << "this is in method turnleft() ..." << endl;

}

};

class Artillery // 火炮子系統

{

public:

void fire() // 開炮

{

cout << "this is in method fire() ..." << endl;

}

void shell_load() // 裝填炮彈

{

cout << "this is in method shell_load() ..." << endl;

}

void aim_at() // 瞄準

{

cout << "this is in method aim_at() ..." << endl;

}

};

class TankFacade

{

private:

vector<Engine> engine;

vector<WheelPedrail> wheel_pedrail;

Controller controller;

Artillery artillery;

public:

TankFacade()

{

vector<Engine> eng(4); // 4個發動機

engine = eng;

for(int i = 0; i < 12; i++) // 12個輪子

{

WheelPedrail wp;

wheel_pedrail.push_back(wp);

}

}

void start()

{

if(!engine[0].get_engine_status()) engine[0].turn_on();

if(!engine[1].get_engine_status()) engine[1].turn_on();

if(!engine[2].get_engine_status()) engine[2].turn_on();

if(!engine[3].get_engine_status()) engine[3].turn_on();

}

void stop()

{

if(engine[0].get_engine_status()) engine[0].turn_off();

if(engine[1].get_engine_status()) engine[1].turn_off();

if(engine[2].get_engine_status()) engine[2].turn_off();

if(engine[3].get_engine_status()) engine[3].turn_off();

}

void run()

{

start();

for(int i = 0; i < 12; i++) // 12個輪子

{

wheel_pedrail[i].rotate();

}

controller.forward();

}

void fire()

{

start();

artillery.aim_at();

artillery.shell_load();

artillery.fire();

}

// ...

};

// 測試代碼:Facade.cpp

#include "Facade.h"

int main(int argc, char **argv)

{

TankFacade *tank = new TankFacade;

tank->run();

tank->fire();

return 0;

}

程序運行結果:

this is in method turn_on() ...

this is in method turn_on() ...

this is in method turn_on() ...

this is in method turn_on() ...

this in method rotate() ...

this in method rotate() ...

this in method rotate() ...

this in method rotate() ...

this in method rotate() ...

this in method rotate() ...

this in method rotate() ...

this in method rotate() ...

this in method rotate() ...

this in method rotate() ...

this in method rotate() ...

this in method rotate() ...

this is in method forward() ...

this is in method aim_at() ...

this is in method shell_load() ...

this is in method fire() ...

Façade設計模式的幾個要點:

- 從客戶程序的角度來看,Façade設計模式不僅簡化了整個組件系統的接口,同時對于組件內部與外部客戶程序來說,從某種程度上也達到了一個“解耦”的效果 --- 內部子系統的任何變化不會影響到Façade接口的變化。

- Façade設計模式更注重從架構的層次去看整個系統,而不是從類的層次。Façade設計模式更多的時候是一種系統架構設計模式。

Façade設計模式、Adapter設計模式、Bridge設計模式與Decorator設計模式之間的區別:

- Façade設計模式注重簡化接口;

- Adapter設計模式注重轉換接口;

- Bridge設計模式注重分離接口(抽象)與其實現;

- Decorator設計模式注重在穩定接口的前提下為對象擴展功能。



posted on 2013-03-07 23:20 Jacc.Kim 閱讀(265) 評論(0)  編輯 收藏 引用 所屬分類: 設計模式
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品一二三视频| 久久久久久欧美| 免费在线观看成人av| 国产午夜精品一区理论片飘花| 亚洲一区在线播放| 久久久综合激的五月天| 欧美在线综合| 国产亚洲一二三区| 久久久久久久久久看片| 欧美在线视频导航| 国产精品videosex极品| 亚洲免费在线观看视频| 一区二区三区色| 国产午夜精品久久| 久久午夜精品| 久久久久久一区| 亚洲精品国产精品国产自| 亚洲大胆美女视频| 欧美日韩国产123区| 一区二区三区视频在线观看| 亚洲乱码国产乱码精品精| 欧美色图首页| 久久久久综合| 免费亚洲一区二区| 亚洲欧美日韩综合aⅴ视频| 欧美一区午夜精品| 亚洲国产精彩中文乱码av在线播放| 亚洲国产91精品在线观看| 欧美日韩在线观看视频| 欧美在线国产| 麻豆精品视频在线观看| 国产在线日韩| 亚洲七七久久综合桃花剧情介绍| 国产精品久久久久久久久婷婷 | 久久久精品国产一区二区三区| 欧美激情亚洲自拍| 久久国产黑丝| 欧美jjzz| 久久九九99| 久久免费视频观看| 亚洲香蕉在线观看| 欧美在线免费观看视频| 亚洲国产成人在线视频| 亚洲性感激情| 99精品视频免费观看视频| 午夜欧美理论片| 99re视频这里只有精品| 午夜精品影院| 夜夜嗨av一区二区三区网站四季av| 亚洲在线黄色| 99视频精品全部免费在线| 亚洲午夜视频在线| 一区二区三区国产| 鲁大师影院一区二区三区| 午夜精品亚洲| 欧美天堂亚洲电影院在线播放| 美女网站久久| 国产欧美一区二区精品性色| 99国产成+人+综合+亚洲欧美| 狠狠色综合网站久久久久久久| 亚洲精品日韩精品| 亚洲国产精品尤物yw在线观看| 久久aⅴ国产紧身牛仔裤| 亚洲国产三级网| 久久久蜜桃精品| 久久久精彩视频| 国产女主播一区二区| 欧美激情亚洲综合一区| 精品av久久久久电影| 欧美一站二站| 欧美一级专区| 国产日韩欧美在线播放| 国产精品99久久久久久久久| 亚洲视频在线二区| 国产精品成人aaaaa网站| 亚洲清纯自拍| 亚洲图片在线观看| 欧美日韩一区综合| 欧美国产日韩二区| 亚洲欧洲精品一区二区| 欧美88av| 亚洲欧洲一二三| 99视频超级精品| 欧美日韩一区二区在线播放| 日韩亚洲精品在线| 亚洲伊人伊色伊影伊综合网| 欧美性猛交xxxx乱大交退制版| 久久久水蜜桃| 在线观看精品| 欧美激情一区二区三区| 日韩视频免费在线观看| 亚洲一区二区三区精品视频| 欧美视频一区二区三区…| 亚洲午夜视频在线| 卡一卡二国产精品| 一区在线免费| 久久九九免费| 亚洲国产婷婷综合在线精品 | 亚洲欧美国产视频| 久久久精品欧美丰满| **网站欧美大片在线观看| 蜜臀久久久99精品久久久久久| 亚洲国产精品第一区二区| 一区二区三区日韩精品| 欧美性色综合| 欧美成人福利视频| 午夜亚洲精品| 99riav1国产精品视频| 麻豆国产精品777777在线| 在线亚洲一区| 亚洲黄网站在线观看| 国产视频综合在线| 欧美日韩国产高清视频| 久久手机免费观看| 午夜精品久久久久久久99樱桃 | 欧美亚洲一区二区三区| 亚洲国产一区二区a毛片| 国产偷国产偷精品高清尤物| 欧美日韩成人在线视频| 久久久久国色av免费观看性色| 亚洲视频精选| 亚洲精品欧美一区二区三区| 美国成人直播| 久久精品国产亚洲精品| 午夜精品久久一牛影视| 一区二区三区日韩欧美| 亚洲一级在线| 中文网丁香综合网| 亚洲区中文字幕| 亚洲国产精品免费| 亚洲国产精品成人| 欧美电影打屁股sp| 欧美激情区在线播放| 欧美14一18处毛片| 裸体丰满少妇做受久久99精品| 久久久久国产精品人| 久久久久国产成人精品亚洲午夜| 午夜精品福利在线| 欧美一区二区三区四区在线 | 一区二区三区四区五区精品视频| 亚洲黄色在线看| 亚洲日韩中文字幕在线播放| 亚洲黄色精品| 亚洲三级免费观看| 日韩亚洲视频| 亚洲制服av| 欧美一区二区在线看| 久久精品国产精品| 麻豆精品视频在线观看| 欧美a级一区| 欧美激情一区二区| 亚洲乱码一区二区| 亚洲性色视频| 久久狠狠一本精品综合网| 久久亚洲捆绑美女| 欧美好骚综合网| 欧美性jizz18性欧美| 国产日韩精品入口| 亚洲视屏在线播放| 欧美在线视屏| 欧美a级大片| 国产精品第一区| 国产在线精品成人一区二区三区| 亚洲成人在线网| a91a精品视频在线观看| 午夜在线观看欧美| 欧美成人免费小视频| 亚洲美女淫视频| 欧美一区二区国产| 欧美国产精品人人做人人爱| 欧美午夜美女看片| 樱花yy私人影院亚洲| 99国内精品久久久久久久软件| 亚洲免费一在线| 欧美成人中文字幕| 亚洲午夜精品福利| 美女国产一区| 国产欧美亚洲视频| 日韩一级二级三级| 午夜亚洲视频| 亚洲国产欧美在线人成| 亚洲免费视频一区二区| 欧美成人精品在线| 国产一区999| 亚洲一级影院| 欧美va天堂在线| 亚洲欧美成人一区二区在线电影 | 日韩午夜在线视频| 久久久久久久一区二区| 国产精品视频精品视频| 亚洲国产高清一区| 久久久亚洲午夜电影| 99riav国产精品| 免费观看成人www动漫视频| 国产日韩在线视频| 亚洲尤物在线视频观看| 亚洲经典在线看| 久久精品一区二区国产| 国产精品一区二区三区四区五区 | 亚洲第一色中文字幕|