資源描述:
《接口與接口設(shè)計(jì)原則.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。
1、接口與接口設(shè)計(jì)原則一.11種設(shè)計(jì)原則1.單一職責(zé)原則-SingleResponsibilityPrinciple(SRP)就一個(gè)類而言,應(yīng)該僅有一個(gè)引起它變化的原因。職責(zé)即為“變化的原因”。2.開(kāi)放-封閉原則-OpenClosePrinciple(OCP)軟件實(shí)體(類、模塊、函數(shù)等)應(yīng)該是可以擴(kuò)展的,但是不可修改。對(duì)于擴(kuò)展是開(kāi)放的,對(duì)于更改是封閉的.關(guān)鍵是抽象.將一個(gè)功能的通用部分和實(shí)現(xiàn)細(xì)節(jié)部分清晰的分離開(kāi)來(lái)。開(kāi)發(fā)人員應(yīng)該僅僅對(duì)程序中呈現(xiàn)出頻繁變化的那些部分作出抽象.拒絕不成熟的抽象和抽象本身一樣重要)3.里氏替換原則-LiskovSubstitutionPrinc
2、iple(LSP)子類型(subclass)必須能夠替換掉它們的基類型(superclass)。4.依賴倒置原則(IoCP)或依賴注入原則-DependenceInversionPrinciple(DIP)抽象不應(yīng)該依賴于細(xì)節(jié)。細(xì)節(jié)應(yīng)該依賴于抽象。Hollywood原則:"Don'tcallus,we'llcallyou".程序中所有的依賴關(guān)系都應(yīng)該終止于抽象類和接口。針對(duì)接口而非實(shí)現(xiàn)編程。任何變量都不應(yīng)該持有一個(gè)指向具體類的指針或引用。任何類都不應(yīng)該從具體類派生。任何方法都不應(yīng)該覆寫(xiě)他的任何基類中的已經(jīng)實(shí)現(xiàn)了的方法。5.接口隔離原則(ISP)不應(yīng)該強(qiáng)迫客戶依賴于它
3、們不用的方法。接口屬于客戶,不屬于它所在的類層次結(jié)構(gòu)。多個(gè)面向特定用戶的接口勝于一個(gè)通用接口。6.重用發(fā)布等價(jià)原則(REP)重用的粒度就是發(fā)布的粒度。7.共同封閉原則(CCP)包(類庫(kù)、DLL)中的所有類對(duì)于同一類性質(zhì)的變化應(yīng)該是共同封閉的。一個(gè)變化若對(duì)一個(gè)包產(chǎn)生影響,則將對(duì)該包中的所有類產(chǎn)生影響,而對(duì)于其他的包不造成任何影響。8.共同重用原則(CRP)一個(gè)包(類庫(kù)、DLL)中的所有類應(yīng)該是共同重用的。如果重用了包(類庫(kù)、DLL)中的一個(gè)類,那么就要重用包(類庫(kù)、DLL)中的所有類。(相互之間沒(méi)有緊密聯(lián)系的類不應(yīng)該在同一個(gè)包(類庫(kù)、DLL)中。)包(類庫(kù)、DLL)耦
4、合原則9.無(wú)環(huán)依賴原則(ADP)在包的依賴關(guān)系圖中不允許存在環(huán)。10.穩(wěn)定依賴原則(SDP)朝著穩(wěn)定的方向進(jìn)行依賴。應(yīng)該把封裝系統(tǒng)高層設(shè)計(jì)的軟件(比如抽象類)放進(jìn)穩(wěn)定的包中,不穩(wěn)定的包中應(yīng)該只包含那些很可能會(huì)改變的軟件(比如具體類)。11.穩(wěn)定抽象原則(SAP)包的抽象程度應(yīng)該和其穩(wěn)定程度一致。一個(gè)穩(wěn)定的包應(yīng)該也是抽象的,一個(gè)不穩(wěn)定的包應(yīng)該是抽象的.其它擴(kuò)展原則12.BBP(BlackBoxPrinciple)黑盒原則多用類的聚合,少用類的繼承。13.DAP(DefaultAbstractionPrinciple)缺省抽象原則在接口和實(shí)現(xiàn)接口的類之間引入一個(gè)抽象類,
5、這個(gè)類實(shí)現(xiàn)了接口的大部分操作.14.IDP(InterfaceDesignPrinciple)接口設(shè)計(jì)原則規(guī)劃一個(gè)接口而不是實(shí)現(xiàn)一個(gè)接口。15.DCSP(Don'tConcreteSupperclassPrinciple)?不要構(gòu)造具體的超類原則,避免維護(hù)具體的超類。16.迪米特法則?一個(gè)類只依賴其觸手可得的類。二.類的設(shè)計(jì)原則??接口定義接口定義1.開(kāi)閉原則Softwareentities(classes,modules,function,etc.)shouldbeopenforextension,butclosedformodification.軟件實(shí)體(模塊,
6、類,方法等)應(yīng)該對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉。開(kāi)閉原則(OCP:Open-ClosedPrinciple)是指在進(jìn)行面向?qū)ο笤O(shè)計(jì)(OOD:ObjectOrientedDesign)中,設(shè)計(jì)類或其他程序單位時(shí),應(yīng)該遵循:-對(duì)擴(kuò)展開(kāi)放(open)-對(duì)修改關(guān)閉(closed)的設(shè)計(jì)原則。開(kāi)閉原則是判斷面向?qū)ο笤O(shè)計(jì)是否正確的最基本的原理之一。根據(jù)開(kāi)閉原則,在設(shè)計(jì)一個(gè)軟件系統(tǒng)模塊(類,方法)的時(shí)候,應(yīng)該可以在不修改原有的模塊(修改關(guān)閉)的基礎(chǔ)上,能擴(kuò)展其功能(擴(kuò)展開(kāi)放)。-擴(kuò)展開(kāi)放:某模塊的功能是可擴(kuò)展的,則該模塊是擴(kuò)展開(kāi)放的。軟件系統(tǒng)的功能上的可擴(kuò)展性要求模塊是擴(kuò)展開(kāi)放的。-修改
7、關(guān)閉:某模塊被其他模塊調(diào)用,如果該模塊的源代碼不允許修改,則該模塊修改關(guān)閉的。軟件系統(tǒng)的功能上的穩(wěn)定性,持續(xù)性要求是修改關(guān)閉的。這也是系統(tǒng)設(shè)計(jì)需要遵循開(kāi)閉原則的原因:1)穩(wěn)定性。開(kāi)閉原則要求擴(kuò)展功能不修改原來(lái)的代碼,這可以讓軟件系統(tǒng)在變化中保持穩(wěn)定。2)擴(kuò)展性。開(kāi)閉原則要求對(duì)擴(kuò)展開(kāi)放,通過(guò)擴(kuò)展提供新的或改變?cè)械墓δ?,讓軟件系統(tǒng)具有靈活的可擴(kuò)展性。遵循開(kāi)閉原則的系統(tǒng)設(shè)計(jì),可以讓軟件系統(tǒng)可復(fù)用,并且易于維護(hù)。開(kāi)閉原則的實(shí)現(xiàn)方法為了滿足開(kāi)閉原則的對(duì)修改關(guān)閉(closedformodification)原則以及擴(kuò)展開(kāi)放(openforextension)原則,應(yīng)該對(duì)軟