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