一張圖快速了解五大架構風格
- 2022 年 2 月 25 日
- 筆記
架構風格
架構風格定義了用於描述系統的術語表和一組指導構建系統的規則。
架構風格反映了領域中眾多系統所共有的結構和寓意特性,並指導如何將各個構件有效地組織成一個完整的系統。
數據流風格
批處理序列
大量整體數據、無需用戶交互
構件為一系列固定順序的計算單元,構件之間只通過數據傳遞交互。每個處理步驟是一個獨立的程式,每一步必須在其前一步結束後才能開始,數據必須是完整的,以整體的方式傳遞。
管道過濾器
流式數據、弱用戶交互
每個構件都有一組輸入和輸出,構件讀輸入的數據流,經過內部處理,然後產生輸出數據流。這個過程通常是通過對輸入數據流的變換或計算來完成的,包括通過計算和增加資訊以豐富數據、通過濃縮和刪除以精簡數據、通過改變記錄方式以轉化數據和遞增地轉化數據等。這裡的構件稱為過濾器,連接件就是數據流傳輸的管道,將一個過濾器的輸出傳到另一個過濾器的輸入。
調用返迴風格
主程式子程式
面向過程
單執行緒控制,把問題劃分為若干個處理步驟,構件即為主程式和子程式,子程式通常可合成為模組。過程調用作為交互機制,即充當連接件的角色。調用關係具有層次性,其語義邏輯表現為主程式的正確性取決於它調用的子程式的正確性
面向對象
對象的方法調用
構件是對象,對象是抽象數據類型的實例。在抽象數據類型中,數據的表示和它們的相應操作被封裝起來,對象的行為體現在其接受和請求的動作。連接件即是對象間交互的方式,對象是通過函數和過程的調用來交互的
層次結構
層與層之間的方法調用
構件組織成一個層次結構,連接件通過決定層間如何交互的協議來定義。每層為上一層提供服務,使用下一層的服務,只能見到與自己鄰接的層。通過層次結構,可以將大的問題分解為若干個漸進的小問題逐步解決,可以隱藏問題的複雜度。修改某一層,最多影響其相鄰的兩層(通常只能影響上層)
獨立構件風格
進程通訊
構件是獨立的過程,連接件是消息傳遞。構件通常是命名過程,消息傳遞的方式可以是點對點、非同步或同步方式,以及遠程過程(方法)調用等。
事件驅動(隱式調用)
構件不直接調用一個過程,而是觸發或廣播一個或多個事件。構件中的過程在一個或多個事件中註冊,當某個事件被觸發時,系統自動調用在這個事件中註冊的所有過程。一個事件的觸發就導致了另一個模組中的過程調用。這種風格中的構件是匿名的過程,它們之間交互的連接件往往是以過程之間的隱式調用來實現的。主要優點是為軟體復用提供了強大的支援,為構件的維護和演化帶來了方便;其缺點是構件放棄了對系統計算的控制。
虛擬機風格
解釋器
解釋器通常包括一個完成解釋工作的解釋引擎、一個包含將被解釋的程式碼的存儲區、一個記錄解釋引擎當前工作狀態的數據結構,以及一個記錄源程式碼被解釋執行的進度的數據結構。具有解釋器風格的軟體中含有一個虛擬機,可以模擬硬體的執行過程和一些關鍵應用,其缺點是執行效率比較低。
規則系統
基於規則的系統包括規則集、規則解釋器、規則/數據選擇器和工作記憶體,一般用在人工智慧領域和DSS中。
倉庫風格
資料庫系統
構件主要有兩大類,一類是中央共享數據源,保存當前系統的數據狀態;另一類是多個獨立處理單元,處理單元對數據元素進行操作。
黑板系統
包括知識源、黑板和控制三部分。知識源包括若干獨立計算的不同單元,提供解決問題的知識。知識源響應黑板的變化,也只修改黑板;黑板是一個全局資料庫,包含問題域解空間的全部狀態,是知識源相互作用的唯一媒介;知識源響應是通過黑板狀態的變化來控制的。黑板系統通常應用在對於解決問題沒有確定性演算法的軟體中(訊號處理、問題規劃和編譯器優化等)。
超文本系統
構件以網狀鏈接方式相互連接,用戶可以在構件之間進行按照人類的聯想思維方式任意跳轉到相關構件。超文本是一種非線性的網狀資訊組織方法,它以結點為基本單位,鏈作為結點之間的聯想式關聯。超文本系統通常應用在互聯網領域。
「你跟講了這麼多,說好的圖呢?」
「不要著急,最好的總是在不經意的時候出現。」
A[軟體架構風格] –>B(數據流風格)
A –> C(調用返迴風格)
A –> D(獨立構件風格)
A –> E(虛擬機風格)
A –> F(倉庫風格)
B –> B1(批處理序列)
B –> B2(管道過濾器)
C –> C1(主程式子程式)
C –> C2(面向對象)
C –> C3(層次結構)
D –> D1(進程通訊)
D –> D2(事件驅動)
E –> E1(解釋器)
E –> E2(規則系統)
F –> F1(資料庫系統)
F –> F2(黑板系統)
F –> F3(超文本系統)
微信公眾號:萬貓學社
微信掃描二維碼
關注後回復「電子書」
獲取12本Java必讀技術書籍

最後,感謝你的點贊和關注,帥氣又美麗。