2021-09-16 軟件架構(gòu)風(fēng)格

要為系統(tǒng)選擇或設(shè)計某一個體系結(jié)構(gòu)風(fēng)格炒俱,必須根據(jù) 特定項目的具體特點飒炎,進(jìn)行分析比較后再確定北救,體系結(jié)構(gòu)風(fēng)格的使用幾乎完全是特定的。

討論體系結(jié)構(gòu)風(fēng)格時要回答的問題是:

(1)設(shè)計詞匯表是什么?

(2)構(gòu)件和連接件的類型是什么?

(3)可容許的結(jié)構(gòu)模式是什么?

(4)基本的計算模型是什么?

(5)風(fēng)格的基本不變性是什么?

(6)其使用的常見例子是什么?

(7)使用此風(fēng)格的優(yōu)缺點是什么?

(8)其常見的特例是什么?

經(jīng)典架構(gòu)風(fēng)格

數(shù)據(jù)流風(fēng)格:批處理序列骡澈、管道與過濾器。

調(diào)用/返回風(fēng)格:主程序與子程序掷空、面向?qū)ο箫L(fēng)格肋殴、層次結(jié)構(gòu)。

獨立構(gòu)件風(fēng)格:進(jìn)程通訊坦弟、事件系統(tǒng)护锤。

虛擬機(jī)風(fēng)格:解釋器、基于規(guī)則的系統(tǒng)减拭。

倉庫風(fēng)格:數(shù)據(jù)庫系統(tǒng)蔽豺、超文本系統(tǒng)、黑板系統(tǒng)拧粪。

管道與過濾器

面向數(shù)據(jù)流修陡,按照一定的順序從前向后執(zhí)行。一個典型的管道與過濾器體系結(jié)構(gòu)的例子是以Unix shell 編寫的程序可霎。

優(yōu)點:

構(gòu)建高內(nèi)聚魄鸦,低耦合

功能可以通過簡單的行為合成實現(xiàn)

復(fù)用性高,維護(hù)和增強(qiáng)系統(tǒng)簡單癣朗。新的過濾器替換老的過濾器即可拾因。

缺點:

不適合交互式的應(yīng)用

數(shù)據(jù)傳輸上沒有通用的標(biāo)準(zhǔn),每個過濾器都增加了解析和合成數(shù)據(jù)的動作旷余,導(dǎo)致了系統(tǒng)性能的下降

img

數(shù)據(jù)抽象&面向?qū)ο?/h1>

建立在數(shù)據(jù)抽象和面向?qū)ο蟮幕A(chǔ)上绢记,數(shù)據(jù)的表示方法和它們的相應(yīng)操作封裝在一個抽象數(shù)據(jù)類型或?qū)ο笾小?/p>

這種風(fēng)格的構(gòu)件是對象,或者說是抽象數(shù)據(jù)類型的實例正卧。

優(yōu)點:

因為對象對其它對象隱藏了它的表示蠢熄,因此可以改變一個對象而不影響其它的對象

可將一些數(shù)據(jù)存取操作的問題,拆解為一些交互代理程序的集合炉旷。

缺點:

為了交互必須知道對象的標(biāo)識签孔,如果對象標(biāo)識改變了,必須修改其它調(diào)用它的對象窘行。

如果A使用了對象B饥追,C也使用了對象B,那么罐盔,C對B的使用所造成的對A的影響可能是料想不到的但绕。

image-20210604211234846

分層系統(tǒng)風(fēng)格

層次系統(tǒng)組織成一個層次結(jié)構(gòu),每一層為上層服務(wù)惶看,并作為下層客戶壁熄。在一些層次系統(tǒng)中帚豪,除 了一些精心挑選的輸出函數(shù)外,內(nèi)部的層只對相鄰的層可見草丧。

優(yōu)點:

支持抽象程度遞增的系統(tǒng)設(shè)計狸臣,使設(shè)計師可以把一個復(fù)雜系統(tǒng)按遞增的步驟進(jìn)行分 解。

支持重用昌执,只要提供的服務(wù)接口定義不變烛亦,同一層的不同實現(xiàn)可以交換使用。這樣懂拾,就可 以定義一組標(biāo)準(zhǔn)的接口煤禽,而允許各種不同的實現(xiàn)方法。

支持功能增強(qiáng)岖赋,因為每一層至多和相鄰的上下層交互檬果,因此功能的改變最多影響相鄰的上 下層。

不足:

并不是每個系統(tǒng)都可以很容易地劃分為分層的模式唐断,甚至即使一個系統(tǒng)的邏輯結(jié)構(gòu)是層次化的选脊,出于對系統(tǒng)性能的考慮,系統(tǒng)設(shè)計師不得不把一些低級或高級的功能綜合起來;

很難找到一個合適的脸甘、正確的層次抽象方法恳啥。

image-20210604212133566

倉庫系統(tǒng)風(fēng)格

有兩種不同的構(gòu)件:中央數(shù)據(jù)結(jié)構(gòu)說明當(dāng)前狀態(tài),獨立構(gòu)件在中央數(shù)據(jù)存貯上執(zhí)行丹诀,倉庫與外構(gòu)件間的相互作用在系統(tǒng)中會有大的變化钝的。

知識源(構(gòu)件) 不直接交互,相互獨立

黑板數(shù)據(jù)按照與應(yīng)用程序相關(guān)的層次來組織的解決問題的數(shù)據(jù)铆遭,知識源 通過不斷地改變黑板數(shù)據(jù)來解決問題硝桩。

控制∶度伲控制完全由黑板的狀態(tài)驅(qū)動亿柑,黑板狀態(tài)的改變決定使用的特定知識。

image-20210604090748076

詳細(xì)內(nèi)容查看《軟件體系結(jié)構(gòu)原理棍弄、方法與實踐》

Get

現(xiàn)在畫架構(gòu)圖總是想著分層要清晰,組件功能要能抽象出來疟游,看了一些基本的架構(gòu)風(fēng)格之后呼畸,其實架構(gòu)設(shè)計未必一定要分層,分層只是經(jīng)典的風(fēng)格之一颁虐,還有基于數(shù)據(jù)的蛮原,互相獨立的組件風(fēng)格可以使用。

參考:

軟件架構(gòu)風(fēng)格介紹

百度百科-軟件架構(gòu)風(fēng)格

1人點贊

Distributed

作者:Real_man

鏈接:http://www.reibang.com/p/a6dd0cee6874

來源:簡書

著作權(quán)歸作者所有另绩。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)儒陨,非商業(yè)轉(zhuǎn)載請注明出處花嘶。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市蹦漠,隨后出現(xiàn)的幾起案子椭员,更是在濱河造成了極大的恐慌,老刑警劉巖笛园,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件隘击,死亡現(xiàn)場離奇詭異,居然都是意外死亡研铆,警方通過查閱死者的電腦和手機(jī)埋同,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來棵红,“玉大人凶赁,你說我怎么就攤上這事∧嫣穑” “怎么了虱肄?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長忆绰。 經(jīng)常有香客問我浩峡,道長,這世上最難降的妖魔是什么错敢? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任翰灾,我火速辦了婚禮,結(jié)果婚禮上稚茅,老公的妹妹穿的比我還像新娘纸淮。我一直安慰自己,他們只是感情好亚享,可當(dāng)我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布咽块。 她就那樣靜靜地躺著,像睡著了一般欺税。 火紅的嫁衣襯著肌膚如雪侈沪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天晚凿,我揣著相機(jī)與錄音亭罪,去河邊找鬼。 笑死歼秽,一個胖子當(dāng)著我的面吹牛应役,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼箩祥,長吁一口氣:“原來是場噩夢啊……” “哼院崇!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起袍祖,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤底瓣,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后盲泛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體濒持,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年寺滚,在試婚紗的時候發(fā)現(xiàn)自己被綠了柑营。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡村视,死狀恐怖官套,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蚁孔,我是刑警寧澤奶赔,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站杠氢,受9級特大地震影響站刑,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜鼻百,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一绞旅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧温艇,春花似錦因悲、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至琐鲁,卻和暖如春卫旱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背围段。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工顾翼, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蒜撮。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親段磨。 傳聞我的和親對象是個殘疾皇子取逾,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 軟件架構(gòu)設(shè)計的一個核心問題是能否使用重復(fù)的軟件架構(gòu)模式,即能否達(dá)到架構(gòu)級別的軟件重用苹支。也就是說砾隅,能否在不同的軟件系...
    deniro閱讀 8,901評論 0 16
  • 要為系統(tǒng)選擇或設(shè)計某一個體系結(jié)構(gòu)風(fēng)格,必須根據(jù) 特定項目的具體特點债蜜,進(jìn)行分析比較后再確定晴埂,體系結(jié)構(gòu)風(fēng)格的使用幾乎完...
    Real_man閱讀 1,185評論 0 1
  • 1. 管道和過濾器風(fēng)格 【數(shù)據(jù)流風(fēng)格,因為管道里都是數(shù)據(jù)流】 (1)構(gòu)件:過濾器寻定。它對輸入流進(jìn)行處理儒洛、轉(zhuǎn)換。處理后...
    Mikito_k閱讀 7,385評論 0 4
  • 首先我們來介紹一下什么是架構(gòu)狼速。架構(gòu)一詞來源于建筑琅锻,代表系統(tǒng)高層次的一些設(shè)計角色。比如建筑領(lǐng)域的一棟大樓的架構(gòu)向胡,指的...
    豎起大拇指閱讀 7,312評論 1 3
  • 軟件結(jié)構(gòu)風(fēng)格的定義:軟件結(jié)構(gòu)風(fēng)格是描述某一特定應(yīng)用領(lǐng)域中系統(tǒng)組織方式的慣用模式(idiomatic paradig...
    流年_9919閱讀 1,803評論 0 0