什么是依賴(lài),什么是抽象
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2011/10/8 11:20:40 ] 推薦標(biāo)簽:
● 繼承
● 聚合
● 接口
● 方法調(diào)用和引用
● 服務(wù)調(diào)用
了解了耦合發(fā)生的一般方式,可以進(jìn)入核心思想的討論,那是在認(rèn)識(shí)和了解依賴(lài)的基礎(chǔ)上,終追求的目標(biāo)。
話(huà)說(shuō)設(shè)計(jì)的目標(biāo):高內(nèi)聚(High cohesion)、低耦合(Low coupling)。
討論了半天,終于是時(shí)候?qū)σ蕾?lài)和耦合進(jìn)行一點(diǎn)兒總結(jié)了,也是該進(jìn)行一點(diǎn)目標(biāo)訴求了。在軟件設(shè)計(jì)領(lǐng)域,有那么幾個(gè)至高原則值得每個(gè)開(kāi)發(fā)者銘記于心,它們是:
● 面向抽象編程
● 低耦合,高內(nèi)聚
● 封裝變化
● 實(shí)現(xiàn)重用:代碼重用、算法重用
對(duì)了,是這些平凡的字眼,匯集了面向?qū)ο笏枷氲暮诵膬?nèi)容,也是本文力求闡釋的禪意心經(jīng)。關(guān)于面向抽象編程和封裝變化,會(huì)在后面詳細(xì)闡釋?zhuān)诖宋覀冃枰獙⒆⒁饬﹃P(guān)注于“低耦合,高內(nèi)聚”這一目標(biāo)。
低耦合,代表了實(shí)現(xiàn)簡(jiǎn)單的依賴(lài)關(guān)系,盡可能地減少類(lèi)與類(lèi)、模塊與模塊、層次與層次、系統(tǒng)與系統(tǒng)之間的聯(lián)系。低耦合,體現(xiàn)了人類(lèi)追求簡(jiǎn)單操作的理想狀態(tài),按照軟件開(kāi)發(fā)的基本實(shí)現(xiàn)技巧來(lái)追求軟件實(shí)體之間的關(guān)系簡(jiǎn)單化,正是大部分設(shè)計(jì)模式力圖追求的目標(biāo);低耦合,降低了一個(gè)類(lèi)或一個(gè)模塊發(fā)生修改對(duì)其他類(lèi)或模塊造成的影響,將影響范圍簡(jiǎn)單化。在本文闡釋的依賴(lài)關(guān)系方式中,實(shí)現(xiàn)單向的依賴(lài),實(shí)現(xiàn)抽象的耦合,都是實(shí)現(xiàn)低耦合的基礎(chǔ)條件。
高內(nèi)聚,一方面代表了職責(zé)的統(tǒng)一管理,一方面體現(xiàn)了關(guān)系的有效隔離。例如單一職責(zé)原則其實(shí)歸根結(jié)底是對(duì)功能性的一種指導(dǎo)性體現(xiàn),將功能緊密聯(lián)系的職責(zé)封裝為一個(gè)類(lèi)(或模塊),而判斷的準(zhǔn)則正是基于引起類(lèi)變化的原因。所以,封裝離不開(kāi)依賴(lài),而抽象離不開(kāi)變化,二者的概念和本質(zhì)都是相對(duì)而言的。因此,高內(nèi)聚的目標(biāo)體現(xiàn)了以隔離為目標(biāo)進(jìn)行統(tǒng)一管理的思想。
那么,為了達(dá)到低耦合、高內(nèi)聚的目標(biāo),通常意義上的設(shè)計(jì)原則和設(shè)計(jì)模式其實(shí)都是朝著這個(gè)方向?qū)崿F(xiàn)的,因此僅僅總結(jié)并非普遍意義的規(guī)則:
● 盡可能實(shí)現(xiàn)單項(xiàng)依賴(lài)。
● 不需要進(jìn)行數(shù)據(jù)交換的雙方,不要實(shí)現(xiàn)多此一舉的關(guān)聯(lián),人們將此形象稱(chēng)為“不要向陌生人說(shuō)話(huà)(Don‘t talk to strangers)”。
● 保持內(nèi)部的封裝性,關(guān)聯(lián)的雙方不要深入實(shí)現(xiàn)細(xì)節(jié)進(jìn)行通信,這是保證高內(nèi)聚的必需條件。
相關(guān)推薦

最新發(fā)布
性能測(cè)試之測(cè)試環(huán)境搭建的方法
2020/7/21 15:39:32軟件測(cè)試是從什么時(shí)候開(kāi)始被企業(yè)所重視的呢?
2020/7/17 9:09:11Android自動(dòng)化測(cè)試框架有哪些?有什么用途?
2020/7/17 9:03:50什么樣的項(xiàng)目適合做自動(dòng)化?自動(dòng)化測(cè)試人員應(yīng)具備怎樣的能力?
2020/7/17 8:57:06幾大市面主流性能測(cè)試工具測(cè)評(píng)
2020/7/17 8:52:11RPA機(jī)器人能夠快速響應(yīng)企業(yè)需求,是怎么做到的?
2020/7/17 8:48:05Bug可以真正消滅嗎?為什么?
2020/7/17 8:43:03軟件測(cè)試基本概念是怎么來(lái)的?軟件測(cè)試生命周期的形成歷經(jīng)了什么?
2020/7/16 9:11:10