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

積木

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 閱讀(271) 評論(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>
            国产欧美日韩另类一区| 国产精品高清免费在线观看| 国产字幕视频一区二区| 欧美亚洲综合在线| 亚洲欧美视频在线| 国产婷婷一区二区| 久久久午夜视频| 麻豆精品91| 日韩视频一区二区三区在线播放| 亚洲日本视频| 国产精品xnxxcom| 久久精品一区中文字幕| 久久精品中文字幕一区| 亚洲国产另类久久久精品极度| 亚洲国产成人精品久久| 欧美三级午夜理伦三级中文幕 | 欧美激情无毛| 亚洲欧美日韩国产精品| 久久久久久精| 一道本一区二区| 欧美一区二区三区视频| 亚洲二区三区四区| 夜夜嗨av一区二区三区中文字幕 | 久久人91精品久久久久久不卡| 久久午夜色播影院免费高清| 99在线|亚洲一区二区| 亚洲一本视频| 亚洲精品九九| 亚洲欧美日韩国产一区| 亚洲欧洲一区二区三区| 午夜国产不卡在线观看视频| 日韩视频中文| 久久精品国产视频| 亚洲午夜三级在线| 六月婷婷久久| 欧美在线国产| 欧美人与性禽动交情品| 久久久久久久成人| 国产精品swag| 亚洲国产福利在线| 狠狠色狠狠色综合日日tαg | 久久丁香综合五月国产三级网站| 欧美成人国产| 久久女同精品一区二区| 欧美午夜一区二区三区免费大片| 欧美99久久| 国产一区二区三区高清播放| 在线中文字幕一区| 99成人在线| 免费久久精品视频| 久久久精品日韩欧美| 欧美系列电影免费观看| 亚洲国产精品123| 亚洲电影免费观看高清完整版在线观看 | 激情亚洲一区二区三区四区| 一区二区日韩精品| 99国产精品久久久久久久成人热| 老司机精品久久| 蜜桃av综合| 韩国精品主播一区二区在线观看| 亚洲欧美视频在线| 亚洲欧美日韩中文播放| 欧美午夜精品久久久久免费视 | 亚洲欧洲美洲综合色网| 在线看国产日韩| 久久人人爽国产| 欧美成人免费观看| 亚洲娇小video精品| 老**午夜毛片一区二区三区| 欧美成人国产va精品日本一级| 影音先锋亚洲精品| 久久亚洲综合色一区二区三区| 美女久久一区| 亚洲精品国偷自产在线99热| 欧美精品久久一区| 一本色道久久综合狠狠躁篇怎么玩 | 免费日韩成人| 亚洲精品资源美女情侣酒店| 欧美成人dvd在线视频| 亚洲欧洲日产国产网站| 在线亚洲+欧美+日本专区| 欧美日韩一区二区三区视频| 在线亚洲欧美视频| 欧美一区二区三区免费看| 国产一区二区三区免费在线观看| 久久久久久久久岛国免费| 欧美成人四级电影| 99精品国产高清一区二区| 国产精品国产三级国产普通话蜜臀 | 老牛嫩草一区二区三区日本| 亚洲国产精品综合| 亚洲一区二区三区视频播放| 国产农村妇女精品一二区| 久久黄金**| 亚洲精品社区| 久久久精品久久久久| 91久久夜色精品国产九色| 欧美婷婷久久| 久久精品在线视频| 91久久精品国产91久久性色tv| 亚洲专区欧美专区| 在线成人免费观看| 欧美日韩亚洲综合一区| 久久成人精品无人区| 亚洲激情视频网站| 久久岛国电影| 一本久道久久综合中文字幕| 国产色综合天天综合网| 欧美高清在线一区二区| 亚洲欧美日韩天堂| 91久久久一线二线三线品牌| 欧美在线观看天堂一区二区三区| 亚洲茄子视频| 国模精品娜娜一二三区| 欧美日韩一卡| 农村妇女精品| 欧美一区二区视频97| 亚洲毛片一区二区| 欧美 日韩 国产 一区| 欧美亚洲一级| 中文精品视频| 99国产精品久久久| 亚洲成人在线观看视频| 国产日韩1区| 国产精品xvideos88| 欧美精品一区二区三区一线天视频| 欧美在线不卡视频| 亚洲女同精品视频| 亚洲精品美女免费| 亚洲第一中文字幕| 免费观看成人www动漫视频| 欧美自拍丝袜亚洲| 亚洲自拍偷拍一区| 亚洲午夜av在线| 一二三区精品福利视频| 亚洲日本在线观看| 亚洲国产精品99久久久久久久久| 国产一区视频观看| 国产日韩在线亚洲字幕中文| 国产毛片一区| 国产一级揄自揄精品视频| 国产精品都在这里| 欧美视频二区36p| 欧美午夜精品久久久| 欧美日韩在线视频一区二区| 欧美日韩成人精品| 欧美午夜视频| 国产精品二区在线观看| 国产精品成人一区二区网站软件| 欧美日韩在线三级| 欧美视频一区二区三区| 国产精品九九| 国产视频亚洲精品| 国产自产2019最新不卡| 极品尤物av久久免费看| 亚洲国产91色在线| 亚洲日韩第九十九页| 一区二区高清在线| 亚洲欧美久久久| 久久久精品国产一区二区三区| 久久香蕉国产线看观看av| 免费成人黄色片| 亚洲精品网址在线观看| 一区二区三区高清在线观看| 亚洲男人的天堂在线aⅴ视频| 欧美一进一出视频| 久久婷婷久久一区二区三区| 欧美国产激情二区三区| 欧美日韩亚洲一区二| 国产精品尤物| 亚洲激情婷婷| 亚洲一区在线直播| 久久综合给合久久狠狠狠97色69| 亚洲国产精品ⅴa在线观看 | 免费不卡在线视频| 亚洲黄一区二区三区| 亚洲视频在线一区| 久久蜜桃资源一区二区老牛| 欧美另类视频在线| 国产亚洲精品aa午夜观看| 亚洲全黄一级网站| 欧美夜福利tv在线| 亚洲国产岛国毛片在线| 亚洲午夜精品| 欧美成人精品影院| 国产欧美激情| 一本色道久久综合亚洲精品不| 欧美一区永久视频免费观看| 亚洲电影下载| 羞羞色国产精品| 欧美日韩国产一区| 加勒比av一区二区| 午夜一区不卡| 亚洲三级色网| 久久久久久穴| 国产视频久久| 亚洲综合第一| 亚洲精品永久免费| 老司机亚洲精品| 国产一区二区三区日韩欧美|