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

積木

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 閱讀(269) 評論(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>
            久久夜精品va视频免费观看| 久久亚洲视频| 亚洲精品一区在线观看香蕉| 免费日韩视频| 在线看片一区| 亚洲电影视频在线| 免费成人黄色| 99国产精品久久久久久久成人热| 亚洲激情图片小说视频| 欧美日本在线观看| 亚洲一二区在线| 亚洲综合成人在线| 国产自产2019最新不卡| 久久中文字幕一区二区三区| 蜜桃视频一区| 亚洲视频精品| 欧美在线看片| 亚洲免费观看在线观看| 一区二区av| 国内精品国产成人| 亚洲国产欧美一区二区三区久久| 欧美日精品一区视频| 欧美影院久久久| 蜜臀a∨国产成人精品| 一本色道久久综合亚洲精品高清 | 亚洲韩国一区二区三区| 美女日韩在线中文字幕| 欧美国产激情二区三区| 午夜欧美大片免费观看| 久久漫画官网| 亚洲综合色网站| 久久久精品日韩欧美| 一区二区欧美激情| 久久aⅴ国产欧美74aaa| 一本色道久久综合精品竹菊 | 午夜影院日韩| 日韩视频免费在线| 西西人体一区二区| 一级日韩一区在线观看| 欧美在线短视频| 一区二区三区日韩欧美| 久久久久久欧美| 亚洲欧美色婷婷| 欧美国产日韩一二三区| 久久久久一区二区三区| 欧美日韩少妇| 亚洲大胆人体在线| 狠狠色噜噜狠狠狠狠色吗综合| 亚洲免费观看| 亚洲国产精品一区在线观看不卡| 亚洲永久字幕| 一区二区三区三区在线| 欧美 日韩 国产在线| 久久午夜视频| 国产视频久久网| 亚洲一区二区三区四区五区午夜 | 亚洲乱码国产乱码精品精可以看 | 欧美一区二区私人影院日本| 一区二区激情| 欧美aⅴ99久久黑人专区| 久久精选视频| 国产欧美va欧美va香蕉在| 一本久道久久综合狠狠爱| 亚洲精品一线二线三线无人区| 久久久久成人精品| 久久精品av麻豆的观看方式 | 久热精品视频在线观看| 久久久精品网| 韩国精品在线观看| 久久av资源网站| 开元免费观看欧美电视剧网站| 国产日韩欧美a| 亚洲综合视频一区| 久久精品国产亚洲5555| 国产一区二区久久| 久久国产精品久久久| 久久久久九九九九| 韩日欧美一区| 久久亚洲欧美国产精品乐播| 美女网站久久| 亚洲国产精品一区二区尤物区| 麻豆成人精品| 亚洲欧洲日本专区| 在线视频亚洲欧美| 国产精品第2页| 亚洲欧美视频一区| 欧美va亚洲va国产综合| 91久久精品国产91性色| 欧美日本不卡视频| 亚洲在线日韩| 久久久噜噜噜久噜久久| 亚洲成人在线视频播放| 欧美福利电影网| 亚洲网在线观看| 久热精品视频在线观看| 91久久精品www人人做人人爽 | 亚洲欧美日韩专区| 欧美成年人视频| 一本一本久久| 韩国av一区二区三区四区| 暖暖成人免费视频| 亚洲在线播放电影| 欧美高清在线观看| 亚洲在线成人| 亚洲国产一区视频| 国产精品久久久久天堂| 久久久国产精品一区| 亚洲精品欧美专区| 久久视频在线免费观看| 一区二区三区四区五区精品视频| 国产精品一二三四区| 久久综合伊人77777尤物| 一本色道久久88综合亚洲精品ⅰ | 亚洲日本电影| 国产日韩一区二区三区在线| 欧美成人一区二区三区片免费| 亚洲天堂久久| 亚洲国产高清视频| 久久国产精品久久久| 日韩视频精品| 精品动漫3d一区二区三区免费版| 欧美日韩精品伦理作品在线免费观看| 午夜精品理论片| 日韩视频在线免费| 欧美成人午夜激情视频| 久久精品中文| 先锋a资源在线看亚洲| 日韩视频精品在线| 亚洲国产精品一区二区尤物区| 国产乱子伦一区二区三区国色天香| 欧美成人嫩草网站| 久久综合九色欧美综合狠狠| 亚洲欧美在线视频观看| 99精品热视频| 亚洲另类黄色| 亚洲激情一区| 欧美激情国产精品| 免费日韩成人| 另类人畜视频在线| 久久久久久国产精品mv| 欧美一区91| 亚洲欧美日韩一区| 亚洲欧美国产不卡| 亚洲午夜精品17c| 这里只有精品视频| 在线视频一区观看| 99在线|亚洲一区二区| 亚洲欧洲日产国码二区| 亚洲精品国产拍免费91在线| 伊甸园精品99久久久久久| 国产一区白浆| 国产综合色产| 136国产福利精品导航| 亚洲电影第1页| 亚洲激情在线播放| 亚洲精选在线| 亚洲视频一二三| 亚洲欧美日韩国产一区二区| 亚洲一区精彩视频| 性色av一区二区三区在线观看| 午夜在线精品| 久久综合给合久久狠狠狠97色69| 久久久国产精品一区| 久久一区二区三区av| 欧美成人精品一区| 亚洲国产精品一区二区第四页av | 亚洲国产欧美在线| 亚洲精品视频中文字幕| 亚洲免费av观看| 亚洲综合激情| 久久夜色精品国产欧美乱极品| 麻豆成人av| 欧美性一二三区| 国产在线拍偷自揄拍精品| 亚洲第一在线视频| 亚洲影音先锋| 久久蜜臀精品av| 91久久精品日日躁夜夜躁欧美| 亚洲精品国产系列| 亚洲免费在线| 欧美.www| 国产伦理精品不卡| 91久久精品一区二区别| 亚洲午夜高清视频| 久久综合狠狠| 一本色道久久综合亚洲精品婷婷| 亚洲欧美综合国产精品一区| 久久午夜精品| 国产精品久久久久久模特| 久久午夜电影网| 亚洲第一天堂无码专区| 在线视频欧美日韩精品| 久久亚洲色图| 国产精品一级久久久| 99re8这里有精品热视频免费| 午夜视频一区二区| 亚洲国产成人porn| 久久精品一二三| 国产精品久久久999| 亚洲啪啪91|