10種常見架構(gòu)模式及其用法羡微、優(yōu)缺點

1分層模式(Layered pattern),
2客戶端-服務(wù)器模式(Client-server pattern)投慈,
3主從模式(Master-slave pattern)承耿,
4管道-過濾器模式(Pipe-filter pattern),
5代理模式(Broker pattern)伪煤,
6點對點模式(Peer-to-peer pattern)加袋,
7事件-總線模式(Event-bus pattern),
8模型-視圖-控制器模式(Model-view-controller pattern),
9黑板模式(Blackboard pattern)抱既,
10解釋器模式(Interpreter pattern)

1. 分層模式

此模式用于可分解為子任務(wù)的結(jié)構(gòu)化程序职烧,每個子任務(wù)都位于特定的抽象層級,每一層都為上一層提供服務(wù)防泵。一般信息系統(tǒng)最常見的4個層次如下蚀之。

表示層(也稱為UI層)

應(yīng)用層(也稱為服務(wù)層)

業(yè)務(wù)邏輯層(也稱為領(lǐng)域?qū)?

數(shù)據(jù)訪問層(也稱為持久層)

應(yīng)用場景:

一般的桌面應(yīng)用程序

電子商務(wù)web應(yīng)用程序

一般的移動App

2. 客戶端-服務(wù)器模式

這種模式由兩部分組成:服務(wù)器和多個客戶端。服務(wù)器將向多個客戶端提供服務(wù)捷泞∽闵荆客戶端從服務(wù)器請求服務(wù),服務(wù)器向這些客戶端提供相關(guān)服務(wù)锁右。此外失受,服務(wù)器繼續(xù)偵聽客戶端請求。

應(yīng)用場景:

電子郵件咏瑟、文檔共享和銀行等在線應(yīng)用程序拂到。

基于IPC的應(yīng)用程序

客戶端-服務(wù)器模式

3.主從模式

這種模式由兩部分組成:主節(jié)點和從節(jié)點。主節(jié)點將工作分配給相同的從節(jié)點码泞,并根據(jù)從節(jié)點返回的結(jié)果計算最終結(jié)果兄旬。

應(yīng)用場景:

在數(shù)據(jù)庫復(fù)制中,主數(shù)據(jù)庫被視為權(quán)威源數(shù)據(jù)庫余寥,從數(shù)據(jù)庫與之同步领铐。

通過總線連接到計算機系統(tǒng)(主驅(qū)動器和從驅(qū)動器)的外圍設(shè)備。

進程內(nèi)的多線程應(yīng)用劈狐。

主-從模式

4.管道-過濾器模式

這種模式可用于構(gòu)造生成和處理數(shù)據(jù)流的系統(tǒng)罐孝。每個處理步驟都包含一個過濾器組件呐馆。要處理的數(shù)據(jù)通過管道傳遞肥缔。這些管道可用于緩沖或同步目的。

應(yīng)用場景:

編譯器汹来。連續(xù)過濾器執(zhí)行詞法分析续膳、詞法解析改艇、語義分析和代碼生成。

生物信息學(xué)的工作流

工具鏈?zhǔn)降膽?yīng)用程序

管道-過濾器模式

5. 代理模式

這種模式通過解耦組件來構(gòu)造分布式系統(tǒng)坟岔。這些組件可以通過遠程服務(wù)調(diào)用彼此交互谒兄。代理組件負責(zé)協(xié)調(diào)組件之間的通信。服務(wù)器向代理發(fā)布功能(服務(wù)和特征)社付〕衅#客戶端向代理請求服務(wù),然后代理將客戶端重定向到合適的服務(wù)鸥咖。需要注意broker燕鸽,agent,proxy以及delegate的區(qū)別啼辣。

應(yīng)用場景:

消息代理軟件啊研,例如:Apache ActiveMQ、Apache Kafka鸥拧、RabbitMQ和JBoss消息傳遞党远。

網(wǎng)絡(luò)傳輸中的代理軟件。

代理模式

6. P2P模式

在這種模式中富弦,每個組件都稱為對等節(jié)點沟娱。對等節(jié)點既可以作為客戶機(從其他對等節(jié)點請求服務(wù)),也可以作為服務(wù)器(向其他對等節(jié)點提供服務(wù))腕柜。對等節(jié)點可以充當(dāng)單個客戶機或服務(wù)器花沉,也可以同時充當(dāng)客戶機和服務(wù)器,并且可以隨著時間變化動態(tài)地更改角色媳握。

使用場景:

文件共享網(wǎng)絡(luò)碱屁,例如Gnutella和G2等。

多媒體協(xié)議蛾找,如P2PTV和PDTP娩脾。

P2P模式

7. 事件-總線模式

這種模式也被稱為訂閱發(fā)布模式,主要處理事件打毛,有4個主要組件:事件源柿赊、事件監(jiān)聽者、通道和事件總線幻枉。事件源將消息發(fā)布到事件總線上的特定通道碰声,監(jiān)聽者訂閱特定的通道。消息發(fā)布到監(jiān)聽者之前訂閱的通道熬甫,監(jiān)聽者將收到消息的通知胰挑。

使用場景:

安卓開發(fā)

通知服務(wù)

注冊中心

事件-總線模式

8. 模型-視圖-控制器模式

這種模式,也稱為MVC模式,將一個交互應(yīng)用程序分為三個部分:

模型-包含核心功能和數(shù)據(jù)

視圖——向用戶顯示信息(可以定義多個視圖)

控制器——處理來自用戶的輸入

這樣做是為了將信息的內(nèi)部表示瞻颂、信息呈現(xiàn)給用戶的方式豺谈、接受用戶輸入的方式分離開來。這種模式解耦組件并允許有效的代碼重用贡这。

應(yīng)用場景:

一般的web應(yīng)用程序架構(gòu)

Django和Rails等Web框架

一般的GUI 應(yīng)用程序

模型-視圖-控制器模式

9. 黑板模式

這種模式對于沒有確定解決方案策略的問題非常有用茬末。黑板圖案由三個主要部分組成:

黑板:一個結(jié)構(gòu)化的全局內(nèi)存,包含來自解決方案空間的對象

知識源:具有自己表示形式的專門化模塊

控制組件:選擇盖矫、配置和執(zhí)行模塊

所有的組件都可以到達黑板丽惭。組件可以生成添加到黑板上的新數(shù)據(jù)對象。組件在黑板上查找特定類型的數(shù)據(jù)辈双,并通過與現(xiàn)有的知識源進行模式匹配找到這些數(shù)據(jù)吐根。

應(yīng)用場景:

語音識別

車輛識別及追蹤

蛋白質(zhì)結(jié)構(gòu)識別

聲納信號的解釋

黑板模式

10. 解釋器模式

這種模式用于設(shè)計一個解釋專用語言編寫的程序組件。它主要指定如何評估每一行程序辐马,即用特定語言編寫的句子或表達式拷橘。其基本思想是語言的每個符號都有一個類。

應(yīng)用場景:

數(shù)據(jù)庫查詢語言喜爷,如SQL冗疮。

用于描述通信協(xié)議的語言。

解釋器模式

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末檩帐,一起剝皮案震驚了整個濱河市术幔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌湃密,老刑警劉巖诅挑,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異泛源,居然都是意外死亡拔妥,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門达箍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來没龙,“玉大人,你說我怎么就攤上這事缎玫∮蚕耍” “怎么了?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵赃磨,是天一觀的道長筝家。 經(jīng)常有香客問我,道長邻辉,這世上最難降的妖魔是什么溪王? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任腮鞍,我火速辦了婚禮,結(jié)果婚禮上在扰,老公的妹妹穿的比我還像新娘。我一直安慰自己雷客,他們只是感情好芒珠,可當(dāng)我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著搅裙,像睡著了一般皱卓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上部逮,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天娜汁,我揣著相機與錄音,去河邊找鬼兄朋。 笑死掐禁,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的颅和。 我是一名探鬼主播傅事,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼峡扩!你這毒婦竟也來了蹭越?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤教届,失蹤者是張志新(化名)和其女友劉穎响鹃,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體案训,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡买置,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了强霎。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片堕义。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖脆栋,靈堂內(nèi)的尸體忽然破棺而出倦卖,到底是詐尸還是另有隱情,我是刑警寧澤椿争,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布怕膛,位于F島的核電站,受9級特大地震影響秦踪,放射性物質(zhì)發(fā)生泄漏褐捻。R本人自食惡果不足惜掸茅,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望柠逞。 院中可真熱鬧昧狮,春花似錦、人聲如沸板壮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽绰精。三九已至撒璧,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間笨使,已是汗流浹背卿樱。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留硫椰,地道東北人繁调。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像靶草,于是被迫代替她去往敵國和親涉馁。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,514評論 2 348

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