一張圖快速了解五大架構風格


架構風格

架構風格定義了用於描述系統的術語表一組指導構建系統的規則

架構風格反映了領域中眾多系統所共有的結構和寓意特性,並指導如何將各個構件有效地組織成一個完整的系統。

數據流風格

批處理序列

大量整體數據、無需用戶交互

構件為一系列固定順序的計算單元,構件之間只通過數據傳遞交互。每個處理步驟是一個獨立的程序,每一步必須在其前一步結束后才能開始,數據必須是完整的,以整體的方式傳遞。

管道過濾器

流式數據、弱用戶交互

每個構件都有一組輸入和輸出,構件讀輸入的數據流,經過內部處理,然后產生輸出數據流。這個過程通常是通過對輸入數據流的變換或計算來完成的,包括通過計算和增加信息以豐富數據、通過濃縮和刪除以精簡數據、通過改變記錄方式以轉化數據和遞增地轉化數據等。這里的構件稱為過濾器,連接件就是數據流傳輸的管道,將一個過濾器的輸出傳到另一個過濾器的輸入。

調用返回風格

主程序子程序

面向過程

單線程控制,把問題划分為若干個處理步驟,構件即為主程序和子程序,子程序通常可合成為模塊。過程調用作為交互機制,即充當連接件的角色。調用關系具有層次性,其語義邏輯表現為主程序的正確性取決於它調用的子程序的正確性

面向對象

對象的方法調用

構件是對象,對象是抽象數據類型的實例。在抽象數據類型中,數據的表示和它們的相應操作被封裝起來,對象的行為體現在其接受和請求的動作。連接件即是對象間交互的方式,對象是通過函數和過程的調用來交互的

層次結構

層與層之間的方法調用

構件組織成一個層次結構,連接件通過決定層間如何交互的協議來定義。每層為上一層提供服務,使用下一層的服務,只能見到與自己鄰接的層。通過層次結構,可以將大的問題分解為若干個漸進的小問題逐步解決,可以隱藏問題的復雜度。修改某一層,最多影響其相鄰的兩層(通常只能影響上層)

獨立構件風格

進程通信

構件是獨立的過程,連接件是消息傳遞。構件通常是命名過程,消息傳遞的方式可以是點對點、異步或同步方式,以及遠程過程(方法)調用等。

事件驅動(隱式調用)

構件不直接調用一個過程,而是觸發或廣播一個或多個事件。構件中的過程在一個或多個事件中注冊,當某個事件被觸發時,系統自動調用在這個事件中注冊的所有過程。一個事件的觸發就導致了另一個模塊中的過程調用。這種風格中的構件是匿名的過程,它們之間交互的連接件往往是以過程之間的隱式調用來實現的。主要優點是為軟件復用提供了強大的支持,為構件的維護和演化帶來了方便;其缺點是構件放棄了對系統計算的控制。

虛擬機風格

解釋器

解釋器通常包括一個完成解釋工作的解釋引擎、一個包含將被解釋的代碼的存儲區、一個記錄解釋引擎當前工作狀態的數據結構,以及一個記錄源代碼被解釋執行的進度的數據結構。具有解釋器風格的軟件中含有一個虛擬機,可以仿真硬件的執行過程和一些關鍵應用,其缺點是執行效率比較低。

規則系統

基於規則的系統包括規則集、規則解釋器、規則/數據選擇器和工作內存,一般用在人工智能領域和DSS中。

倉庫風格

數據庫系統

構件主要有兩大類,一類是中央共享數據源,保存當前系統的數據狀態;另一類是多個獨立處理單元,處理單元對數據元素進行操作。

黑板系統

包括知識源、黑板和控制三部分。知識源包括若干獨立計算的不同單元,提供解決問題的知識。知識源響應黑板的變化,也只修改黑板;黑板是一個全局數據庫,包含問題域解空間的全部狀態,是知識源相互作用的唯一媒介;知識源響應是通過黑板狀態的變化來控制的。黑板系統通常應用在對於解決問題沒有確定性算法的軟件中(信號處理、問題規划和編譯器優化等)。

超文本系統

構件以網狀鏈接方式相互連接,用戶可以在構件之間進行按照人類的聯想思維方式任意跳轉到相關構件。超文本是一種非線性的網狀信息組織方法,它以結點為基本單位,鏈作為結點之間的聯想式關聯。超文本系統通常應用在互聯網領域。


“你跟講了這么多,說好的圖呢?”
“不要着急,最好的總是在不經意的時候出現。”

graph LR 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必讀技術書籍

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM