資源描述:
《面向?qū)ο笤O計原則和設計模式的應用》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在工程資料-天天文庫。
1、第28卷第1期2007年2月華 北 水 利 水 電 學 院 學 報JournalofNorthChinaInstituteofWaterConservancyandHydroelectricPowerVol128No11Feb.2007文章編號:1002-5634(2007)01-0063-03面向?qū)ο笤O計原則和設計模式的應用張 宇,莊晉林(華北水利水電學院,河南鄭州450011)摘 要:面向?qū)ο笤O計原則在基于面向?qū)ο蠓椒ㄩ_發(fā)軟件系統(tǒng)的過程中起著重要的指導作用.它是各種設計模式背后的基本思想原則,遵守設計原則能提高軟件的可維護性和可復用性.結(jié)合具有代表性的設計模式及應用實例,深入討論了面向
2、對象設計原則.關鍵詞:面向?qū)ο?設計原則;設計模式中圖分類號:TP132.4 文獻標識碼:A 面向?qū)ο笤O計OOD(ObjectOrientedDesign)有3個最基本的設計原則:①針對接口編程,而不是針對實現(xiàn)編程;②優(yōu)先使用對象組合,而不是類繼承;③封裝變化點.在此基礎上可以得出幾條具體的設計原則:開放封閉原則OCP(Open-ClosePrinci2ple);Liskov替換原則LSP(LiskovSubstitutionPrinci2ple);依賴倒置原則DIP(DependencyInvertionPrin2ciple);接口隔離原則ISP(InterfaceSeparatePr
3、inci2ple).采用這些設計原則可提高系統(tǒng)的可維護性和可復用性.設計模式是軟件開發(fā)過程中對重復出現(xiàn)問題的可重用性解決方案[1].1 開放封閉原則OCP1.1 OCP的定義符合OCP的模塊需滿足2個標準:①可擴展,即“對擴展開放”.模塊的功能可以被擴展,以滿足新的需求;②不可更改,即“對更改封閉”.模塊的源代碼是不允許進行改動的.開放封閉原則是OOD的真正核心.其他的原則是它的手段和工具,是附屬的原則.1.2 OCP的特點和實現(xiàn)OCP具有可擴展和不可修改的特點.擴展開放可以使軟件系統(tǒng)方便地添加新的功能;修改封閉使系統(tǒng)已有的模塊、特別是重要的抽象層模塊不能被修改.因此,遵守OCP的軟件系統(tǒng)能
4、適應不斷變化的需求并保持穩(wěn)定.要實現(xiàn)OCP需要作到抽象化.一個軟件系統(tǒng)要區(qū)分抽象層和實現(xiàn)層,用戶只能看到抽象層.用戶通過抽象層的接口訪問軟件系統(tǒng),該抽象層根據(jù)用戶請求的具體內(nèi)容決定使用系統(tǒng)中哪些具體的功能.當軟件需要提供新的功能,只需要在軟件中增加新的模塊,而客戶端代碼和抽象層不需要改變或者只需要作很小的改變.1.3 OCP在設計模式中的體現(xiàn)1.3.1 簡單工廠模式簡單工廠模式由一個工廠類根據(jù)傳入的參量決定創(chuàng)建出哪一種產(chǎn)品類的實例,是類的創(chuàng)建模式,涉及工廠類、抽象產(chǎn)品類和具體產(chǎn)品類.例如一個繪圖軟件,能處理圓形和橢圓形2種幾何圖形.首先定義一個“抽象產(chǎn)品”———Shape接口,這些幾何圖形類都
5、實現(xiàn)這個接口.再定義一個“工廠類”———ShapeCreator,來創(chuàng)建各種“具體產(chǎn)品”———幾何圖形類的具體實例.系統(tǒng)如圖1所示.當客戶端需要某個產(chǎn)品時,需向工廠類請求,然后工廠類自行判斷創(chuàng)建哪一個產(chǎn)品.所以,客戶端無需修改就可以接納新的產(chǎn)品;抽象產(chǎn)品Shape接口由于處于抽象層因而十分穩(wěn)定;工廠類必須知道每收稿日期:2006-06-10;修訂日期:2006-08-20基金項目:河南省科技攻關項目(0524220064).作者簡介:張 宇(1982-),男,河南許昌人,華北水利水電學院在讀碩士研究生,主要從事面向?qū)ο蠹夹g方面的研究.64 華 北 水 利 水 電 學 院 學 報
6、 2007年2月一種產(chǎn)品如何創(chuàng)建,因而加入一個新的產(chǎn)品時必須修改其代碼.圖1 簡單工廠模式實例1.3.2 工廠方法模式定義一個創(chuàng)建產(chǎn)品對象的工廠接口,將實際創(chuàng)建工作推遲到子類中,工廠類不再負責所有產(chǎn)品的創(chuàng)建.因此,系統(tǒng)在加入新的產(chǎn)品時就不需要修改抽象工廠類和具體工廠類,只需要增加與新加入產(chǎn)品相應的具體工廠類即可.將上述繪圖軟件的例子用工廠方法模式實現(xiàn),如圖2所示.工廠類ShapeCreator抽象出來作為ShapeCreator接口,具體的創(chuàng)建工作由實現(xiàn)這個接口的類去做.當系統(tǒng)擴充功能添加三角形圖形時,只需添加實現(xiàn)Shape接口的三角形新類,同時相應地創(chuàng)建實現(xiàn)ShapeCreator接口的三
7、角形實現(xiàn)類.因此工廠方法模式能夠簡單方便地實現(xiàn)軟件系統(tǒng)功能擴充,并能保持系統(tǒng)的穩(wěn)定.圖2 工廠方法模式實例2 Liskov替換原則LSP2.1 LSP的定義使用指向基類(超類)的引用函數(shù),必須能夠在不知道具體派生類(子類)對象類型的情況下使用[2].換言之,如果用戶使用一個基類,那么子類一定可以替代基類,用戶不會察覺到基類對象和子類對象的區(qū)別.但是反過來不成立.LSP是繼承復用的基石.該原則和開