架構(gòu)模式

從混亂到有序

1 Layers模式

采用分層的設(shè)計(jì)思想盗棵,如tcp/ip協(xié)議棧的實(shí)現(xiàn):

代碼結(jié)構(gòu)類似如下衔蹲,當(dāng)然還有變種

classL1Provider{

public:

virtual voidl1Service() =0;

};

classL2Provider{

public:

virtual voidl2Service() =0;

voidsetL1Provider(L1Provider*provider){this->provider= provider;};

protected:

L1Provider*provider;

};

classL3Provider{

public:

virtual voidl3Service() =0;

voidsetL2Provider(L2Provider*provider){this->provider= provider;}

protected:

L2Provider*provider;

};

classDataLink:publicL1Provider{

public:

virtual voidl1Service(){

cout<<"L1 service doing it jobs"<

}

};

classTranspot:publicL2Provider{

virtual voidl2Service(){

cout<<"L2 service before doing it jobs"<

provider->l1Service();

cout<<"L2 service after doing it jobs"<

}

};

classSession:publicL3Provider{

virtual voidl3Service(){

cout<<"L3 service before doing it jobs"<

provider->l2Service();

cout<<"L3 service after doing it jobs"<

}

};

優(yōu)點(diǎn):各層可重用 支持標(biāo)準(zhǔn)化 限制了依賴關(guān)系范圍? 可更換性

缺點(diǎn):行為變化可能引起雪崩效應(yīng) 效率低下 不必要的工作? 難以確定正確的層次粒度




2 Pipes and filter (流水線斩祭,管道與過(guò)濾器模型)

提供類似unix的管道(|)對(duì)數(shù)據(jù)處理的架構(gòu)界阁,將數(shù)據(jù)寫(xiě)入管道,下一個(gè)filter進(jìn)行處理 长窄,并寫(xiě)入另一個(gè)管道。

有如下幾種情景

1

2 情景2 拉取模型


情景3 推拉模型 中間filter主動(dòng)請(qǐng)求數(shù)據(jù)并推送數(shù)據(jù)


4 情景4 并行模式 所有filter都主動(dòng)拉取,輪詢屬于自己的管道


優(yōu)點(diǎn):不需要中間文件忠聚,但也可以使用 ? 可更換過(guò)濾器 ? 可重組過(guò)濾器 ?可重用過(guò)濾器 ?可快速創(chuàng)建流水線原型 ?效率因并行處理所提高

缺點(diǎn):狀態(tài)信息的開(kāi)銷高昂或缺乏靈活性 ?通過(guò)并行提高效率的初衷常為泡影 ?數(shù)據(jù)轉(zhuǎn)換開(kāi)銷大 ?錯(cuò)誤處理



3BlackBoard (黑板模式)

未找到解決辦法的不成熟領(lǐng)域,如語(yǔ)音識(shí)別 圖下識(shí)別 監(jiān)視等唱捣,該問(wèn)題具有如下特點(diǎn): 可分解成多個(gè)子問(wèn)題两蟀,但每個(gè)子問(wèn)題都屬于多個(gè)不同專業(yè)領(lǐng)域。要解決子問(wèn)題震缭,需要使用不同的表示方法和范式赂毯。再很多情況下都沒(méi)有指導(dǎo)子問(wèn)題解決者如何系統(tǒng)作戰(zhàn)的既定策略,者與職責(zé)分解形成了鮮明的對(duì)比拣宰,在執(zhí)飛分解中党涕,按指定順序啟動(dòng)多個(gè)解決步驟。

該框架結(jié)構(gòu)分為三部分: 控制組建 黑板組建 知識(shí)源

control用于確定下一個(gè)使用的知識(shí)源巡社,確定下一個(gè)知識(shí)源需要使用知識(shí)源判斷自己是否能處理黑板組建上的結(jié)果膛堤,黑板組建責(zé)用于幾率知識(shí)源產(chǎn)生的結(jié)果。


關(guān)系


優(yōu)點(diǎn):可以驗(yàn)證 ?有助于提高可修改性和可維護(hù)性 知識(shí)源課重用 可提高容錯(cuò)能力和健壯性

缺點(diǎn):難以測(cè)試 ?不保證能提供滿意的解 難以制定上號(hào)的策略 效率低 開(kāi)發(fā)工作量大 ?不支持并行


分布式系統(tǒng)

分布式系統(tǒng)的優(yōu)點(diǎn): 經(jīng)濟(jì)實(shí)惠 性能和可擴(kuò)展性 固有分配行 可靠性

1 Broker(中間人模式)

組件圖


組件



該模式主要有三部分 ?client broker ?server 晌该。 client用于發(fā)起請(qǐng)求 broker用于分發(fā)服務(wù)肥荔,server用于處理請(qǐng)求绿渣, 另外client proxy是屬于client部分,用處對(duì)數(shù)據(jù)進(jìn)行額外處理燕耿,同樣server provy屬于server部分中符。 bridge的意圖時(shí)用于 將三部分接偶,可通過(guò)不同的bridge導(dǎo)向不同的server和client (其實(shí)android中binder就是一個(gè)這樣的結(jié)構(gòu) binder驅(qū)動(dòng)就是中間人)

存在以下幾個(gè)情景

1情景1 ?服務(wù)向中間人注冊(cè)


服務(wù)向中間人注冊(cè)


情景2 ?客戶端向本地服務(wù)發(fā)送請(qǐng)求


客戶端向本地服務(wù)發(fā)送請(qǐng)求


情景3 不同中間人通過(guò)網(wǎng)絡(luò)交互


不同中間人通過(guò)網(wǎng)絡(luò)交互

優(yōu)點(diǎn):位置透明誉帅,組件可修改可擴(kuò)展 可移植 ?不同broker系統(tǒng)之間的互操作性 可重用性

缺點(diǎn):效率不高淀散,容錯(cuò)性差 測(cè)試和調(diào)試?yán)щy


交互式系統(tǒng)

人機(jī)交互西東,多為含有界面的程序

交互式系統(tǒng)開(kāi)發(fā)起來(lái)比較容易堵第,因?yàn)槿斯げ僮鞣稚⒘诉壿?/p>

Mode-View-Controller(mvc)模式

常見(jiàn)的gui程序幾乎都屬于mvc模式或mvc模式變種

該模式分為三部分吧凉,數(shù)據(jù)模型,控制器踏志,界面阀捅, 界面用于顯示數(shù)據(jù),并且通過(guò)界面?zhèn)鬟f事件給控制器處理邏輯针余,更新數(shù)據(jù)饲鄙,數(shù)據(jù)變化又出發(fā)控制器更新界面。

組件


mvc模式圖

動(dòng)態(tài):?

情景1 用戶輸入導(dǎo)致模型變化圆雁,進(jìn)而出發(fā)變更傳播機(jī)制

情景1

情景2 ?組件初始化


情景2


優(yōu)點(diǎn):一個(gè)模型可以有多個(gè)視圖忍级,視圖同步,可插入的視圖和控制器伪朽,可更換外觀轴咱,可開(kāi)發(fā)框架

缺點(diǎn):更復(fù)雜 更新可能過(guò)度頻繁 視圖和控制器關(guān)系緊密 視圖和控制器與模型耦合 視圖和控制器訪問(wèn)效率底下,移植必須修改視圖和控制器 使用較新的用戶界面工具時(shí)難以遵循mvc


presentation-Abstraction-Contril(PAC)模式

定義了一種適用于交互式系統(tǒng)的結(jié)構(gòu)-由相互協(xié)作的只能體組成的層次結(jié)構(gòu)烈涮。每個(gè)只能體都負(fù)責(zé)應(yīng)用程序功能的特定方面朴肺,并包含三個(gè)組件:表示組件,抽象組件和控制組件坚洽,這將只能的人機(jī)交互方向功能核心同通信分離

注意整個(gè)系統(tǒng)由多個(gè)pac模塊組成戈稿,每個(gè)模塊由pac模塊組成。各pac模塊采用樹(shù)狀結(jié)構(gòu)讶舰,最上層為最基礎(chǔ)模塊鞍盗,逐層組合下上層邏輯。

以下均以政治選舉信息系統(tǒng)為例子介紹(用戶輸入表格跳昼,系統(tǒng)可將數(shù)據(jù)繪制成餅圖般甲,柱狀圖,席位分布圖)鹅颊。


模式


靜態(tài)結(jié)構(gòu)

體系

PAC智能體內(nèi)部結(jié)構(gòu):


pac內(nèi)部圖

動(dòng)態(tài)圖

情景1 打開(kāi)新的選舉數(shù)據(jù)柱狀圖時(shí)欣除,不同pac智能體之間的協(xié)作,還描述了柱狀圖pac內(nèi)部行為

pac

情景2 描述輸入新數(shù)據(jù)后系統(tǒng)的行為挪略,詳細(xì)說(shuō)明頂層pac智能體的內(nèi)部行為


為了控制器起作用 历帚,這個(gè)getDate 流程有點(diǎn)長(zhǎng)哈滔岳,必然使復(fù)雜度上升

優(yōu)點(diǎn): 分離關(guān)注點(diǎn) 支持修改和擴(kuò)展 ?支持多任務(wù)(控制線程完成同步控制)

缺點(diǎn):系統(tǒng)更復(fù)雜 復(fù)雜的控制組件,效率底下

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末挽牢,一起剝皮案震驚了整個(gè)濱河市谱煤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌禽拔,老刑警劉巖刘离,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異睹栖,居然都是意外死亡硫惕,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén)野来,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)恼除,“玉大人,你說(shuō)我怎么就攤上這事曼氛』砘裕” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵舀患,是天一觀的道長(zhǎng)徽级。 經(jīng)常有香客問(wèn)我,道長(zhǎng)聊浅,這世上最難降的妖魔是什么餐抢? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮低匙,結(jié)果婚禮上弹澎,老公的妹妹穿的比我還像新娘。我一直安慰自己努咐,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布殴胧。 她就那樣靜靜地躺著渗稍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪团滥。 梳的紋絲不亂的頭發(fā)上竿屹,一...
    開(kāi)封第一講書(shū)人閱讀 49,760評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音灸姊,去河邊找鬼拱燃。 笑死,一個(gè)胖子當(dāng)著我的面吹牛力惯,可吹牛的內(nèi)容都是我干的碗誉。 我是一名探鬼主播召嘶,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼哮缺!你這毒婦竟也來(lái)了弄跌?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤尝苇,失蹤者是張志新(化名)和其女友劉穎铛只,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體糠溜,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡淳玩,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了非竿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蜕着。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖汽馋,靈堂內(nèi)的尸體忽然破棺而出侮东,到底是詐尸還是另有隱情,我是刑警寧澤豹芯,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布悄雅,位于F島的核電站,受9級(jí)特大地震影響铁蹈,放射性物質(zhì)發(fā)生泄漏宽闲。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一握牧、第九天 我趴在偏房一處隱蔽的房頂上張望容诬。 院中可真熱鬧,春花似錦沿腰、人聲如沸览徒。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)习蓬。三九已至,卻和暖如春措嵌,著一層夾襖步出監(jiān)牢的瞬間躲叼,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工企巢, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留枫慷,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像或听,于是被迫代替她去往敵國(guó)和親探孝。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容