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