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é)議的語言。
解釋器模式