六大程序接口設(shè)計(jì)原則_第1頁
六大程序接口設(shè)計(jì)原則_第2頁
六大程序接口設(shè)計(jì)原則_第3頁
六大程序接口設(shè)計(jì)原則_第4頁
六大程序接口設(shè)計(jì)原則_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

本文格式為Word版,下載可任意編輯——六大程序接口設(shè)計(jì)原則六大程序接口設(shè)計(jì)原那么

程序接口設(shè)計(jì)的原那么是什么呢?下面是我給大家供給的六大程序接口設(shè)計(jì)原那么,大家可以參考閱讀,更多詳情請關(guān)注我。

一.單一職責(zé)原那么

SingleResponsibilityPrinciple,簡稱SRP。

定義:Thereshouldneverbemorethanonereasonforaclasstochange.

理應(yīng)有且僅有一個(gè)理由引起類的變更。

職責(zé)的劃分?單一的定義和級(jí)別?

理應(yīng)根據(jù)實(shí)際業(yè)務(wù)處境而定。關(guān)注變化點(diǎn)。

實(shí)際使用時(shí),類很難做到職責(zé)單一,但是接口的職責(zé)理應(yīng)盡量單一。

二.里氏替換原那么

LiskovSubstitutionPrinciple,簡稱LSP。

定義:Functionsthatusepointersorreferencestobaseclassesmustbeabletouseobjectsofderivedclasseswithoutknowingit.

全體引用基類的地方務(wù)必能通明地使用其子類的對(duì)象

里氏替換原那么為良好的繼承定義了一個(gè)模范:

1.子類務(wù)必完全實(shí)現(xiàn)父類的方法

2.子類可以有自己的天性屬性和方法。

3.籠罩或?qū)崿F(xiàn)父類的方法時(shí)輸入?yún)?shù)可以被放大。

4.覆寫或?qū)崿F(xiàn)父類的方法時(shí)輸出結(jié)果可以被縮小。

注:在類中調(diào)用其他類時(shí)務(wù)必要使用父類或接口,假設(shè)不能使用父類或接口,那么說明類的設(shè)計(jì)已經(jīng)違背了LSP原那么。

三.憑借倒置原那么

DependenceInversionPrinciple,簡稱DIP

定義:Highlevelmodulesshouldnotdependuponlowlevelmodules.Bothshoulddependuponabstractions.Abstractionsshouldnotdependupondetails.Detailsshoulddependuponabstractions.

翻譯過來,包含三層含義:

1.高層模塊不理應(yīng)憑借低層模塊,兩者都理應(yīng)憑借其抽象。

2.抽象不理應(yīng)憑借細(xì)節(jié)。

3.細(xì)節(jié)理應(yīng)憑借抽象。

精簡的定義:面向接口編程。

Test-DrivenDevelopment測試驅(qū)動(dòng)開發(fā)是憑借倒置原那么的最好表達(dá)。

測試驅(qū)動(dòng)開發(fā)要求先寫測試類,測試通過才寫實(shí)現(xiàn)類,這就要求你要先想接口定義。

憑借的三種寫法:

1.構(gòu)造函數(shù)傳遞憑借對(duì)象。

2.Setter方法傳遞憑借對(duì)象。

3.接口聲明憑借對(duì)象。

最正確實(shí)踐:

1.每個(gè)類盡量都有接口或抽象類,或者抽象類和接口兩者都具備。

2.變量的外觀類型盡量是接口或抽象類。

3.任何類都不理應(yīng)從概括類派生。

4.盡量不要覆寫基類的`方法。

5.結(jié)合里氏替換原那么使用。

四.接口隔離原那么:

接口這里指用interface關(guān)鍵字定義的接口。

定義:

1.Clientsshouldnotbeforcedtodependuponinterfacesthattheydontuse.客戶端不理應(yīng)憑借它不需要的接口

2.Thedependencyofoneclasstoantheroneshoulddependonthesmallestpossibleinterface.類間的憑借關(guān)系理應(yīng)建立在最小的接口上

概括:建立單一接口,不要建立臃腫浩瀚的接口。

通俗來講:接口盡量細(xì)化,同時(shí)接口中的方法盡量少。

如何細(xì)化?細(xì)化到什么程序?

沒有統(tǒng)一的標(biāo)準(zhǔn),應(yīng)根據(jù)業(yè)務(wù)合理細(xì)分,適合業(yè)務(wù)才是重點(diǎn)。

保證接口的純結(jié)性:

1.接口要盡量小。

2.接口要高內(nèi)聚。

3.定制服務(wù)。

4.接口的設(shè)計(jì)是有限度的。

最正確實(shí)踐:

1.一個(gè)接口只服務(wù)于一個(gè)子模塊或業(yè)務(wù)規(guī)律。

2.通過業(yè)務(wù)規(guī)律壓縮接口中的public方法,接口時(shí)常去回想,盡量讓接口達(dá)成"滿身筋骨肉',而不是"肥嘟嘟'的一大堆方法。

3.已經(jīng)被污染了的接口,盡量去修改,若變更的風(fēng)險(xiǎn)較大,那么采用適配器模式舉行轉(zhuǎn)化處理。

4.了解環(huán)境,拒絕盲從。每個(gè)工程或產(chǎn)品都有特定的環(huán)境因素,不要盲從大師的設(shè)計(jì),要根據(jù)業(yè)務(wù)規(guī)律舉行最好的接口設(shè)計(jì)。

五.迪米特法那么

LawofDemeter,LOD。又稱最少學(xué)識(shí)原那么LeastKnowledgePrinciple,LKP。

通俗來講:一個(gè)類理應(yīng)對(duì)自己需要耦合或調(diào)用的類知道得最少,你被耦合或調(diào)用的類的內(nèi)部是如何繁雜都和我沒有關(guān)系,那是你的事情,我就調(diào)用你供給的public方法,其他一概不關(guān)切。

低耦合要求:

1.只和摯友交流

摯友類:展現(xiàn)在成員變量、方法的輸入輸出參數(shù)中的類。方法體內(nèi)部的類不屬于摯友類。

2.摯友間也是有距離的

迪米特法那么要求類"害羞'一點(diǎn),盡量不要對(duì)外公布太多的public方法和非靜態(tài)的public變量,盡量內(nèi)斂,多使用private、package-private、protected等訪問權(quán)限。

3.是自己的就是自己的

假設(shè)一個(gè)方法放在本類中,既不增加類間關(guān)系,也對(duì)本類不產(chǎn)生負(fù)面影響,就放置在本類中。

4.精心使用Serializable

六.開閉原那么

Softwareentitieslikeclasses,modulesandfunctionsshouldbeopenforextensionbutclosedformodifications.一個(gè)軟件實(shí)體如類、模塊和函數(shù)理

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論