淺談設(shè)計(jì)模式及如何選擇設(shè)計(jì)模式
摘 要:針對(duì)當(dāng)前軟件行業(yè)普遍借鑒的設(shè)計(jì)模式,提出了如何選擇設(shè)計(jì)模式,討論了設(shè)計(jì)原則。
關(guān)鍵詞:設(shè)計(jì)模式;設(shè)計(jì)原則;設(shè)計(jì)模式的選擇
設(shè)計(jì)模式是面向?qū)ο蠹夹g(shù)的最新進(jìn)展之一,它針對(duì)不斷重復(fù)出現(xiàn)的問(wèn)題,能夠復(fù)用已有的、優(yōu)秀的解決方案,因此提高了軟件開(kāi)發(fā)質(zhì)量和代碼重用性。
1、設(shè)計(jì)模式概念
設(shè)計(jì)模式是“對(duì)一些經(jīng)過(guò)定制、能相互通信的對(duì)象和類的描述,用來(lái)解決特定場(chǎng)景下某個(gè)普遍的設(shè)計(jì)問(wèn)題!盙OF經(jīng)典設(shè)計(jì)模式使用類圖、對(duì)象圖、交互圖等顯示類與對(duì)象之間的關(guān)系和通信。其中類圖用來(lái)描述各個(gè)類、類的結(jié)構(gòu)以及它們之間的關(guān)系,對(duì)象圖描述對(duì)象結(jié)構(gòu),而交互圖描述的是對(duì)象間產(chǎn)生關(guān)系的流程。
設(shè)計(jì)模式種類眾多,在GOF經(jīng)典設(shè)計(jì)模式中,達(dá)23種之多,設(shè)計(jì)模式分類主要是根據(jù)目的準(zhǔn)則和范圍準(zhǔn)則。目的準(zhǔn)則說(shuō)明模式是用來(lái)完成什么工作的,根據(jù)目的準(zhǔn)則,模式可分為三種:(1)創(chuàng)建型:設(shè)計(jì)模式與對(duì)象創(chuàng)建無(wú)關(guān),把對(duì)象的創(chuàng)建和其它部分的代碼分離,從而創(chuàng)建對(duì)象會(huì)更加靈活。例如設(shè)計(jì)模式中的簡(jiǎn)單工廠模式,工廠方法模式,抽象工廠模式,創(chuàng)建者模式,原型模式,單例模式;(2)結(jié)構(gòu)型:模式結(jié)構(gòu)清晰,主要處理類或?qū)ο蟮慕M合,但是模式的每一部分的結(jié)構(gòu)都專門負(fù)責(zé)完成某一職責(zé)。例如設(shè)計(jì)模式中的外觀模式,適配器模式,代理模式,裝飾模式,橋模式,組合模式,享元模式;(3)行為型:行為類模式主要描述類或?qū)ο笾g的交互,以及類和對(duì)象的主要職責(zé)模板方法模式,觀察者模式,狀態(tài)模式,策略模式,職責(zé)鏈模式,命令模式,訪問(wèn)者模式,調(diào)停者模式,備忘錄模式,迭代器模式,解釋器模式。范圍準(zhǔn)則關(guān)注模式的制定主要用于類還是對(duì)象,其中“類模式”處理類與類之間的繼承關(guān)系,這種關(guān)系是靜態(tài)的,而“對(duì)象模式”處理對(duì)象之間的關(guān)系,這種關(guān)系是動(dòng)態(tài)的。設(shè)計(jì)模式種類繁多,如何選出一個(gè)針對(duì)特定設(shè)計(jì)問(wèn)題的模式是十分困難的。因此選擇適合特定設(shè)計(jì)問(wèn)題的設(shè)計(jì)模式,是人們比較關(guān)心的問(wèn)題。
2、設(shè)計(jì)模式的選擇
設(shè)計(jì)模式是面向?qū)ο蟮母邔哟谓鉀Q方案,它不會(huì)過(guò)于關(guān)注具體問(wèn)題的細(xì)節(jié),所以應(yīng)該把現(xiàn)實(shí)世界中存在的問(wèn)題進(jìn)行抽象,設(shè)計(jì)模式在選擇對(duì)象和決定對(duì)象粒度方面都能起到作用。
、胚x擇合適的對(duì)象。設(shè)計(jì)模式的對(duì)象來(lái)源于現(xiàn)實(shí)世界的抽象模型,針對(duì)具體問(wèn)題描述,進(jìn)行抽象,創(chuàng)建類和操作。但是在這些分析模型中得到的一些層次較高或較低的類,在現(xiàn)實(shí)世界里并不存在,比如數(shù)組等,設(shè)計(jì)模式能夠確定這些在現(xiàn)實(shí)世界中找不到的類。
、茮Q定對(duì)象粒度大小。設(shè)計(jì)模式能夠決定對(duì)象的大小和數(shù)目,例如,外觀模式能夠使用對(duì)象表示完整的子系統(tǒng),享元模式的對(duì)象粒度最小且數(shù)目眾多,抽象工廠模式能夠生產(chǎn)其它對(duì)象的對(duì)象。這些設(shè)計(jì)模式為對(duì)象粒度的選擇提供了一定的依據(jù)。每一種設(shè)計(jì)模式都是為解決一類問(wèn)題而出現(xiàn)的,例如:橋接(Bridge)模式屬于結(jié)構(gòu)性模式,其意圖是分離抽象部分和實(shí)現(xiàn)部分,使這兩部分相互獨(dú)立,不會(huì)相互影響;解釋器(Interpreter)模式屬于行為模式,它的意圖是給定一個(gè)語(yǔ)言及其語(yǔ)法語(yǔ)義,并定義一個(gè)解釋器,用來(lái)使用這些語(yǔ)法語(yǔ)義表示這個(gè)語(yǔ)言的含義;生成器(Builder)模式屬于創(chuàng)建型模式,它的意圖是把復(fù)雜對(duì)象的構(gòu)建和它的表示分開(kāi),使得同一個(gè)創(chuàng)建過(guò)程可以含有不同的表示。只有了解了設(shè)計(jì)模式的意圖,才會(huì)比較容易地選擇出,適合實(shí)際問(wèn)題的'一個(gè)或多個(gè)設(shè)計(jì)模式。
盡管設(shè)計(jì)模式在粒度和抽象層次上各不相同,但是它們之間還是具有一些關(guān)聯(lián),根據(jù)目的和使用范圍不同,對(duì)設(shè)計(jì)模式進(jìn)行了分類。分類能夠指導(dǎo)應(yīng)用設(shè)計(jì)模式的目的和范圍,目的準(zhǔn)則中的創(chuàng)建型模式與對(duì)象的創(chuàng)建有關(guān),結(jié)構(gòu)性模式關(guān)注于類或者對(duì)象的組合,行為性模式描述了類或者對(duì)象的交互關(guān)系和職責(zé)分配,范圍準(zhǔn)則是以類和對(duì)象來(lái)劃分的,類模式是研究類與子類之間的靜態(tài)關(guān)系,而對(duì)象模式關(guān)注的是對(duì)象之間的動(dòng)態(tài)關(guān)系。如果確定了業(yè)務(wù)邏輯的目的和元素,就能縮小設(shè)計(jì)模式的選擇范圍,能夠快速獲得適合的設(shè)計(jì)模式或者模式組。
3、設(shè)計(jì)原則
⑴單一職責(zé)原則,即不能存在多于一個(gè)導(dǎo)致類變更的原因。簡(jiǎn)單的說(shuō)就是一個(gè)類只負(fù)責(zé)一項(xiàng)職責(zé)。在軟件設(shè)計(jì)中,秉承著“高內(nèi)聚,低耦合”的思想,讓一個(gè)類僅負(fù)責(zé)一項(xiàng)職責(zé)。
、评锸咸鎿Q原則,如果對(duì)每一個(gè)類型為T1的對(duì)象o1,都有類型為T2的對(duì)象o2,使得以T1定義的所有程序P在所有的對(duì)象o1都換成o2時(shí),程序P的行為沒(méi)有變化,那么類型T2是類型T1的子類型。包含4層含義:①子類可以實(shí)現(xiàn)父類的抽象方法,但是不能覆蓋父類的非抽象方法。②子類可以實(shí)現(xiàn)父類的抽象方法,但是不能覆蓋父類的非抽象方法。③當(dāng)子類覆蓋或?qū)崿F(xiàn)父類的方法時(shí),方法的前置條件(即方法的形參)要比父類方法的輸入?yún)?shù)更寬松。④當(dāng)子類覆蓋或?qū)崿F(xiàn)父類的方法時(shí),方法的前置條件(即方法的形參)要比父類方法的輸入?yún)?shù)更寬松。
、且蕾嚨怪迷瓌t,高層模塊不應(yīng)該依賴低層模塊,兩者都應(yīng)該依賴其抽象,抽象不應(yīng)該依賴細(xì)節(jié),細(xì)節(jié)應(yīng)該依賴抽象。
、冉涌诟綦x原則,接口中的方法應(yīng)該盡量少,不要使接口過(guò)于臃腫,不要有很多不相關(guān)的邏輯方法。
總之,原則是前人經(jīng)驗(yàn)的總結(jié),在軟件設(shè)計(jì)中具有一定的指導(dǎo)作用,但是不能完全照搬這些原則。對(duì)于接口隔離原則來(lái)說(shuō),接口盡量小,但是也要有限度。對(duì)接口進(jìn)行細(xì)化可以提高程序設(shè)計(jì)靈活性是不爭(zhēng)的事實(shí),但是如果過(guò)小,則會(huì)造成接口數(shù)量過(guò)多,使設(shè)計(jì)復(fù)雜化,所以一定要適度。
【淺談設(shè)計(jì)模式及如何選擇設(shè)計(jì)模式】相關(guān)文章:
2.上市公司財(cái)務(wù)控制模式的選擇及問(wèn)題論文
3.淺談中國(guó)當(dāng)代的汽車營(yíng)銷模式
4.計(jì)算機(jī)網(wǎng)頁(yè)設(shè)計(jì)的課程教學(xué)模式改革論文
5.淺談?dòng)行дn堂教學(xué)模式的教育理論論文
6.淺談經(jīng)濟(jì)法課程教學(xué)中存在的問(wèn)題是及改革模式
7.淺談創(chuàng)新教學(xué)模式,培養(yǎng)新型醫(yī)學(xué)人才論文