10個通用軟體架構模式
在本文中,我將簡要介紹以下10種常見的架構模式及其用法,優缺點。
- 分層模式
- 客戶端 - 伺服器模式
- 主從模式
- 管道過濾器模式
- 經紀人模式
- 點對點模式
- 事件匯流排模式
- 模型 - 檢視 - 控制器模式
- 黑板模式
- 直譯器模式
1.分層圖案
該模式可用於建立可以分解為子任務組的軟體系統,每個子任務都處於特定的抽象級別。每個層為下一個更高層提供服務。可見馬丁鮑勃大叔的乾淨架構
最常見的4層通用資訊系統如下。
- 表示層 (也稱為UI層 )
- 應用層 (也稱為服務層 )
- 業務邏輯層 (也稱為域層 )
- 資料訪問層 (也稱為持久層 )
用法
- 一般桌面應用程式
- 電子商務Web應用程式。
分層模式
2.客戶端 - 伺服器模式
這種模式由兩方組成; 一個伺服器 和多個客戶端 。伺服器元件將為多個客戶端元件提供服務。客戶端從伺服器請求服務,伺服器向這些客戶端提供相關服務。此外,伺服器繼續監聽客戶端請求。
用法
- 線上應用程式,如電子郵件,文件共享和銀行。
客戶端 - 伺服器模式
3.主從模式
這種模式由兩方組成;主節點 和從節點 。主元件在相同的從元件之間分配工作,並根據從組返回的結果計算最終結果。
用法
- 在資料庫複製中,主資料庫被視為權威源,從屬資料庫與其同步。
- 外圍裝置連線到計算機系統中的匯流排(主驅動器和從驅動器)。
主從模式
4.管道過濾器模式
該模式可用於構建生成和處理資料流的系統。每個處理步驟都包含在過濾器 元件中。要處理的資料通過管道 傳遞。這些管道可用於緩衝或用於同步目的。
用法
- 編譯器。連續過濾器執行詞法分析,解析,語義分析和程式碼生成。
- 生物資訊學的工作流程。
管道過濾器模式
5.經紀人模式
此模式用於構建具有分離元件的分散式系統。這些元件可以通過遠端服務呼叫相互互動。一個經紀人 元件負責通訊之間的協調元件 。
伺服器將其功能(服務和特徵)釋出到代理。客戶端從代理請求服務,然後代理將客戶端從其登錄檔重定向到合適的服務。
用法
- 訊息代理軟體,如ActiveMQ" rel="nofollow,noindex" target="_blank"> Apache ActiveMQ , Apache Kafka ,RabbitMQ" rel="nofollow,noindex" target="_blank"> RabbitMQ 和 JBoss Messaging 。
經紀人模式
6.點對點模式
在這種模式中,各個元件稱為對等 元件。對等體既可以作為客戶端 ,從其他對等體請求服務,也可以作為伺服器 ,為其他對等體提供服務。對等體可以充當客戶端或伺服器,也可以充當兩者,並且可以隨時間動態地改變其角色。
用法

點對點模式
7.事件匯流排模式
這種模式主要涉及事件,有4個主要組成部分;事件源 ,事件監聽器 ,通道 和事件匯流排 。源將事件釋出到事件總線上的特定通道。聽眾訂閱特定頻道。監聽者會收到釋出到他們之前訂閱的頻道的訊息的通知。
用法
- Android開發
- 通知服務

事件匯流排模式
8.模型 - 檢視 - 控制器模式
這種模式,也稱為MVC模式,將互動式應用程式劃分為3個部分,
- model - 包含核心功能和資料
- view - 向用戶顯示資訊(可以定義多個檢視)
- controller - 處理來自使用者的輸入
這樣做是為了將資訊的內部表示與向用戶呈現和接受資訊的方式分開。它解耦元件並允許有效的程式碼重用。
用法
- 主要程式語言中的全球資訊網應用程式架構。
- Web框架,如Django_%28web_framework%29" rel="nofollow,noindex" target="_blank"> Django 和Ruby_on_Rails" rel="nofollow,noindex" target="_blank"> Rails 。

模型 - 檢視 - 控制器模式
9.黑板模式
這種模式對於沒有確定性解決方案策略的問題很有用。黑板模式由3個主要部分組成。
- 黑板blackboard - 包含解決方案空間中物件的結構化全域性記憶體
- 知識來源 - 具有自己代表性的專業模組
- 控制組件 - 選擇,配置和執行模組。
所有元件都可以訪問黑板。元件可能會生成新增到黑板的新資料物件。元件在黑板上查詢特定型別的資料,並且可以通過與現有知識源的模式匹配來找到它們。
用法
- 語音識別
- 車輛識別和跟蹤
- 蛋白質結構鑑定
- 聲納訊號解釋。

黑板模式
10.直譯器模式
此模式用於設計解釋用專用語言編寫的程式的元件。它主要指定如何評估程式行,稱為用特定語言編寫的句子或表示式。基本思想是為語言的每個符號設定一個類。
用法
- 資料庫查詢語言,如SQL。
- 用於描述通訊協議的語言。

直譯器模式