系统架构设计师 - 软件架构设计 - 软件架构风格
文章目錄
- 軟件架構風格描述
- 數據流風格
- 批處理風格
- 管道過濾器風格
- 調用返回風格
- 主子程序風格
- 面向對象(顯式調用風格)
- `層次結構`風格
- 獨立構件風格
- 調用返回風格(隱式調用)
- 虛擬機風格
- 基于規則風格
- 解釋器風格
- 倉庫風格
- 數據庫風格
- 黑板系統
- 瀏覽器風格
- 兩層CS架構
- 三層CS架構
- 三層BS架構
- `混合架構`
- 其他風格
- C2風格
軟件架構風格描述
軟件架構風格是描述某一特定領域內系統組織方式的慣用模式,它包括一個詞匯表和一組約束.詞匯表包擴一些構件和連接件的類型.而約束描述了系統是如何將這些構件和連接件組合到一起的.軟件架構風格反映了特定領域內的系統共有的結構和語義,并指導系統如果將子系統和構件有效的連接在一起.
以下紅色只為個人備忘,不代表知識點重要程度
數據流風格
批處理風格
由一組固定順序的構件連接在一起組成
每個構件的開始必須在上一個構件的結束后開始。構件間交互的數據必須時完整的。
管道過濾器風格
構件有一個輸入流、一個輸出流。構件根據輸入流進行內部處理,產生輸出流,構件即過濾器。構件的連接件即為管道,負責把一個過濾器的輸出傳給另一個過濾器的輸入
優點:
構件間具有良好的隱蔽性和低耦合性;
支持軟件重用只需要確定構件間交互的數據格式,即可將任何兩個構件連接在一起;
可擴展性強,添加新的構件,可修改性強,更換構件不會對其他構件和整體架構造成影響;
支持并行處理,每個過濾器可作為單獨任務完成;
缺點:
難以定義過濾器間數據通信的統一標準;
調用返回風格
主子程序風格
單線程控制,把問題分成若干處理步驟主程序根據自身需要,選擇子程序進行調用。
面向對象(顯式調用風格)
將構件間交互的數據的表示形式及其操作封裝成對象,即構件。構件間的過程調用或函數即連接件。
優點:
對象具有的封裝性,修改一個對象不會對其他對象照成影響;
一個構件如果想要調用另一個構件,只需要知道另一個構件的標識即可。
缺點:
一但一個構件的標識發生變化,那么所有調用這個對象的構件都要發生變化;
如果A調用了C,B也調用了C,那么A對C的影響對B是不可預計的;
層次結構風格
每一層即為構件,層與層間的通訊即為連接件。每一層負責調用下一層的功能,并向上一層提供功能。每一層只可見其相鄰的兩個層次;
優點:
把一個復雜的問題分成增量步驟去解決,降低問題復雜度,逐個擊破
具有良好的低耦合特性,每一層的變動僅對其相鄰的層次照成影響;擴展性,添加新的層次簡單;
缺點:過多的層次調用影響響應效率
獨立構件風格
調用返回風格(隱式調用)
構件不直接調用構件的過程,而是觸發一個事件或觸發多個事件.系統中其他構件的過程在一個或多個構件中注冊,當一個事件觸發時,所有在該事件中進行注冊的構件的過程都將被調用;
優點:
低耦合性,每個構件不直接關聯到一起,二十通過注冊的方式關聯;
可復用性強,一個構件的過程可以被多個事件調用,只需要在事件中進行注冊;
可擴展性強,新增一個構件時只需要把它注冊在相關的事件中,替換一個構件時不會對其他構件或整體系統照成影響;
缺點:
一個事件觸發后,其無法知曉其中注冊的構件的過程是否成功執行;
即使知道一個事件中注冊了哪些構件的過程,但其調用過程的順序不可保證
虛擬機風格
基于規則風格
用于專家系統
解釋器風格
完成解釋工作的解釋引擎,待解釋代碼的儲存區,記錄當前解釋器解釋狀態的數據結構,記錄源代碼被解釋進度的數據結構來屏蔽來自操作系統,數據等外部環境的差異,建立解釋規則
優點:
缺點:
效率低
倉庫風格
數據庫風格
說明當前系統數據狀態的中央數據結構,在中央數據結構上執行的構件
輸入流中的某個事件觸發進程的選擇
黑板系統
說明系統數據狀態的中央數據結構,在中央數據結構上運行的構件
中央數據結構的當前狀態觸發進程選擇
瀏覽器風格
兩層CS架構
胖客戶端. 表示層- 數據層
缺點:
開發成本高,要開發客戶端,客戶端設計復雜;
軟件移植困難;
客戶端冗余業務,不利于維護,修改擴展時很麻煩;
優點:
響應效率會比BC略高,因為客戶端負責了部分的運算;
網絡負載小,一般都在內部局域網;
安全性高,不涉及互聯網傳輸;
三層CS架構
瘦客戶端. 表示層 - 功能層 - 數據層
對兩層CS架構中,客戶端和服務器端的均存在的功能層進行了提取
三層BS架構
0客戶端. 瀏覽器 - web服務器
使用通用的瀏覽器和www訪問Web服務器的方式進行交互.
優點:可擴展性強,瀏覽器不冗余業務.
缺點:
安全性不如CS(通過信息安全策略彌補);
對動態頁面的支持不足(通過jsp css等彌補);
以頁面為提交單位(通過ajax彌補)
混合架構
內外有別:
內部管理體系健全,客戶端可維護且客戶端數量校驗,可采用CS;
外部分布區域廣,免去客戶端維護,可擴展性號;
查改有別:
其他風格
C2風格
每個構件都一個頂部和底部.每個構件可以和任何其他構件連接. 每個構件的頂部只能連接在另一個構件的底部.
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的系统架构设计师 - 软件架构设计 - 软件架构风格的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MybatisPlus_进阶
- 下一篇: 1分钟 Zookeeper 快速入门_w