摘要:現(xiàn)在Internet已經(jīng)是全球最先進的技術(shù)之一,而Internet最先出現(xiàn)的時候叫做ARPAnet,而且它是本來是美國的一個項目,當時美國為了處理國家軍事范圍內(nèi)的緊急事件,想要實現(xiàn)在遠距離通信,然后Internet慢慢發(fā)展起來,并產(chǎn)生了可觀的效益,之后Internet慢慢的從小變大,最后擴大到了全世界。
關(guān)鍵詞:Internet;計算機;程序;設(shè)計模式
中圖分類號:TP311 文獻標識碼:A 文章編號:1674-7712(2012)20-0021-01
說到Internet,就會聯(lián)想到計算機,說到計算機就會聯(lián)想到程序,然后就想到程序語言,我的畢業(yè)設(shè)計是一個游戲,使用C#來編寫代碼,并且使用Unity3D引擎來制作游戲,接下來我主要討論一下關(guān)于設(shè)計模式方面的知識。
說到設(shè)計模式,本人覺得設(shè)計模式是一個優(yōu)秀的軟件設(shè)計師必備的知識,一般來說,在開發(fā)軟件的過程中,往往會產(chǎn)生一個問題,隨著時間的推移,對軟件的需求不斷的變化,因此就必須不斷的對軟件進行修改,而在修改的過程中,可能會改變軟件原始的框架設(shè)計,然后經(jīng)過一段時間時候,這個軟件很有可能在很大程度上已經(jīng)偏離的原始的框架設(shè)計,而且修改軟件的難度會不斷的增加,因為往往修改軟件一個部分之后,該軟件的其他部分會受到影響,因此會產(chǎn)生一些無法預(yù)料的各種小問題,這些問題雖然小,但是改起來特別的麻煩,一直到誰也不愿意去修改這個軟件,最后軟件開發(fā)商寧愿重新開發(fā)一款嶄新的軟件,并滿足所有的要求,于是這個軟件的循環(huán)又開始了。
設(shè)計模式強調(diào)的比較多的是代碼的復(fù)用,也就是說,我們在寫程序的時候往往會多次碰到相似的問題,傳統(tǒng)的方法就是再次碰見的時候就重新編寫代碼,之前編寫的代碼無法直接使用,或者需要修改一些代碼才能使用,于是就出現(xiàn)了代碼的copy,使得軟件里面多次出現(xiàn)了相似的代碼,這樣的代碼耦合度高、可讀性差,而應(yīng)用設(shè)計模式知識來設(shè)計框架的時候,這種問題就會得到很好的緩解。
設(shè)計模式還有一個抽象概念,我理解的這個抽象的目的是為了封裝變化,抽象的每一種具體實現(xiàn)的方法聲明是不變的,但是每一種實現(xiàn)的方法內(nèi)容又是變化的,而這里的不變和變化就很明顯的體現(xiàn)出了框架的穩(wěn)定性和擴展性。
設(shè)計模式的目的就是解決或者減輕這種問題的影響,使用設(shè)計模式的思想來設(shè)計軟件,能夠讓軟件容納更多的可變性,也就是說在更多情況下對軟件進行修改的時候不會影響到該軟件的原始設(shè)計,并且隨著軟件的復(fù)雜度增加,修改的難度不會像原來那種開發(fā)模式下增加的速度快,也就是說可以減輕開發(fā)難度,使得軟件更加的清潔。
設(shè)計模式思想:
開閉原則:開閉原則是指軟件對擴展開放,對修改關(guān)閉,也就是說,框架設(shè)計好之后,可以向框架中添加代碼,但是不能修改已經(jīng)有的代碼。開閉原則是設(shè)計模式的目標,一個軟件的設(shè)計越接近于開閉原則,那么這個軟件就越容易擴展,耦合性也越低,能夠使開發(fā)更有效率。
里斯代換原則:這個原則講的是只要是父類能夠存在的地方,它的子類也能夠存在。里氏代換原則是達到開閉原則的途徑。
接口隔離原則:講的是盡量把開放給客戶端的接口分成幾個部分,不要給客戶端開放過多的接口,這樣的話,每個客戶端只能訪問到自己需要的功能,不能訪問到自己不需要的功能,這樣能夠使得客戶端在調(diào)用程序的時候能夠不用關(guān)心它用不到的功能,使得客戶端調(diào)用功能的過程變的簡單,雖然這看起來貌似沒有簡單多少,但是在真正編程的時候,這一點是非常重要的,因為往往客戶端會不斷的調(diào)用功能,這樣每次都容易一點,很多次積累起來就節(jié)省了很多時間和精力。
迪米特法則:指的是程序之間盡量不要有直接的交流,也就是說要限制程序之前溝通的廣度和深度,這么做的一個好處就是能夠降低程序之間的耦合性,使得在一個模塊面臨修改的壓力的時候,盡可能少的或者不會吧這種壓力轉(zhuǎn)移到其他模塊里面,這樣就使得對軟件的修改變的簡單。也就是說設(shè)計模式的一個很大的好處就是使編程變的簡單,這一點我深有體會。
聚合原則:指的是盡量使用聚集而不是繼承,雖然繼承是一個非常重要的概念,但是繼承也會帶來一定的不靈活性,繼承的耦合度比較高,而聚集的耦合度就相對來說弱了很多,我也是在第三遍認真閱讀這一章的時候才真正理解這個意思,我覺得這是一個非常不錯的方法,并且在之后的程序設(shè)計里面把這個原則的思想加了進去,起到了比較好的效果。
依賴倒轉(zhuǎn)原則:指的是程序要依賴于抽象層,而不依賴于具體的實現(xiàn)層。而傳統(tǒng)的編程是抽象成依賴于實現(xiàn)層,也就是說,當一個具體的實現(xiàn)被改動之后,很有可能需要更改整個軟件的框架,這種工作量是非??捎^的,而設(shè)計模式的要求剛好反過來,于是這種原則叫做依賴倒轉(zhuǎn)原則,也就是說,抽象層是比較穩(wěn)定的,一般不會改變的,這樣抽象層就比較好的實現(xiàn)了代碼的復(fù)用。
現(xiàn)在已經(jīng)有二十多種比較好的設(shè)計模式,它們分成幾大類:創(chuàng)建模式、結(jié)構(gòu)模式、行為模式。
創(chuàng)建模式是對類的實例化過程的抽象化,一些系統(tǒng)在創(chuàng)建對象時,需要動態(tài)地決定怎樣創(chuàng)建對象,創(chuàng)建那些對象,以及如何組合和表示這些對象。創(chuàng)建模式描述了怎樣構(gòu)造和封裝這些動態(tài)的決定。
結(jié)構(gòu)模式描述如何將類或者對象結(jié)合在一起形成更大的結(jié)構(gòu)。結(jié)構(gòu)模式描述兩種不同的東西:類與類的實例。根據(jù)這一不同,結(jié)構(gòu)模式可以分為類的結(jié)構(gòu)模式和對象的結(jié)構(gòu)模式兩種。
行為模式是對在不同對象之間劃分責任和算法的抽象化,行為模式不僅僅是關(guān)于類和對象的,而且是關(guān)于他們之間的相互作用的。
這些設(shè)計模式中,每一個都有它適合的地方,但是不要把一種模式硬生生的套在自己的程序里面,應(yīng)該根據(jù)情況的不同做一些變通,也就是說要對設(shè)計模式的思想理解清楚。
我覺得在設(shè)計模式領(lǐng)域里面的知識中,最重要的還是它的基本思想,萬變不離其宗,只要掌握了這些最基本的原則,那些具體的模式都是可以很容易就能掌握的。
設(shè)計模式最本質(zhì)的就是擴展性和松耦合,設(shè)計模式可以讓程序適應(yīng)軟件需求的不斷變化,并維持項目的開發(fā)速度。
接下來我說一下本人對幾個設(shè)計模式的理解。
工廠模式:工廠模式用來創(chuàng)建對象,就是把對象的創(chuàng)建任務(wù)交給工廠類在做,這樣就把對象的創(chuàng)建完美的封裝了起來,如果以后改變對象創(chuàng)建方式的時候就不需要改變客戶端。這種模式在一定程度上封裝了對象創(chuàng)建的可變性。
單例模式:顧名思義,就是只有一個實例,要求一個類只有一個實例的時候,可以考慮單例類,單例類有兩種實現(xiàn)方式:懶漢式和餓漢式。懶漢式是第一次獲取該單例對象的時候創(chuàng)建這個對象。餓漢式是類加載的時候就創(chuàng)建這個對象。如果該對象加載時間不是很長的話建議使用懶漢式,如果加載時間特別長,考慮到運行的效率,建議使用餓漢式。