分層式結(jié)構(gòu)究竟其優(yōu)勢(shì)何在?
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
分層式結(jié)構(gòu)究竟其優(yōu)勢(shì)何在?Martin Fowler在《Patterns of Enterprise Application Architecture》一書中給出了答案:
1、開(kāi)發(fā)人員可以只關(guān)注整個(gè)結(jié)構(gòu)中的其中某一層; 2、可以很容易的用新的實(shí)現(xiàn)來(lái)替換原有層次的實(shí)現(xiàn); 3、可以降低層與層之間的依賴; 4、有利于標(biāo)準(zhǔn)化; 5、利于各層邏輯的復(fù)用。 概括來(lái)說(shuō),分層式設(shè)計(jì)可以達(dá)至如下目的:分散關(guān)注、松散耦合、邏輯復(fù)用、標(biāo)準(zhǔn)定義。 一個(gè)好的分層式結(jié)構(gòu),可以使得開(kāi)發(fā)人員的分工更加明確。一旦定義好各層次之間的接口,負(fù)責(zé)不同邏輯設(shè)計(jì)的開(kāi)發(fā)人員就可以分散關(guān)注,齊頭并進(jìn)。例如UI人員只需考慮用戶界面的體驗(yàn)與操作,領(lǐng)域的設(shè)計(jì)人員可以僅關(guān)注業(yè)務(wù)邏輯的設(shè)計(jì),而數(shù)據(jù)庫(kù)設(shè)計(jì)人員也不必為繁瑣的用戶交互而頭疼了。每個(gè)開(kāi)發(fā)人員的任務(wù)得到了確認(rèn),開(kāi)發(fā)進(jìn)度就可以迅速的提高。 松散耦合的好處是顯而易見(jiàn)的。如果一個(gè)系統(tǒng)沒(méi)有分層,那么各自的邏輯都緊緊糾纏在一起,彼此間相互依賴,誰(shuí)都是不可替換的。一旦發(fā)生改變,則牽一發(fā)而動(dòng)全身,對(duì)項(xiàng)目的影響極為嚴(yán)重。降低層與層間的依賴性,既可以良好地保證未來(lái)的可擴(kuò)展,在復(fù)用性上也是優(yōu)勢(shì)明顯。每個(gè)功能模塊一旦定義好統(tǒng)一的接口,就可以被各個(gè)模塊所調(diào)用,而不用為相同的功能進(jìn)行重復(fù)地開(kāi)發(fā)。 進(jìn)行好的分層式結(jié)構(gòu)設(shè)計(jì),標(biāo)準(zhǔn)也是必不可少的。只有在一定程度的標(biāo)準(zhǔn)化基礎(chǔ)上,這個(gè)系統(tǒng)才是可擴(kuò)展的,可替換的。而層與層之間的通信也必然保證了接口的標(biāo)準(zhǔn)化。 “金無(wú)足赤,人無(wú)完人”,分層式結(jié)構(gòu)也不可避免具有一些缺陷: 1、降低了系統(tǒng)的性能。這是不言而喻的。如果不采用分層式結(jié)構(gòu),很多業(yè)務(wù)可以直接造訪數(shù)據(jù)庫(kù),以此獲取相應(yīng)的數(shù)據(jù),如今卻必須通過(guò)中間層來(lái)完成。 2、有時(shí)會(huì)導(dǎo)致級(jí)聯(lián)的修改。這種修改尤其體現(xiàn)在自上而下的方向。如果在表示層中需要增加一個(gè)功能,為保證其設(shè)計(jì)符合分層式結(jié)構(gòu),可能需要在相應(yīng)的業(yè)務(wù)邏輯層和數(shù)據(jù)訪問(wèn)層中都增加相應(yīng)的代碼。 該文章在 2011/1/8 15:33:18 編輯過(guò) |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |