李胤融
摘要:在計算機軟件快速發(fā)展的今天,軟件設(shè)計模式在計算機程序設(shè)計的運用中越來越重要。軟件設(shè)計模式按其完成工作的種類可分為了創(chuàng)建型的模式、結(jié)構(gòu)型的模式以及行為型的模式。在實際應(yīng)用中根據(jù)分析研究問題的結(jié)果選擇和使用合適的軟件設(shè)計模式。
關(guān)鍵詞:軟件設(shè)計設(shè)計模式新探索
關(guān)于模式這個概念,最早的時候是在城市建筑領(lǐng)域當中出現(xiàn)的,而ChristopherAlexander所寫的本關(guān)于建筑的書中對模式這概念有明確的定義,其大概含義是說每個模式都是描述我們周圍發(fā)生的事情,并對發(fā)生的問題進行合理的解釋,使得利用這個模式就可以重復(fù)的解決類似的問題。Christopher Alexander利用他所得出的模式這個概念解決了建筑領(lǐng)域中的些問題,模式這概念發(fā)展到現(xiàn)在,已經(jīng)逐漸成為計算機領(lǐng)域當中獨有的概念了。
一、現(xiàn)階段軟件設(shè)計模式的分析
對軟件設(shè)計模式的分類有許多不同的方法,在這里主要是根據(jù)模式在計算機軟件設(shè)計中能夠完成何種種類的工作來決定的,大致可以分為創(chuàng)建型的模式、結(jié)構(gòu)型的模式以及行為型的模式這三種類型。而當模式運用于不同因素的時候又可以分為不同的類型,運用于類的時候可以分為類模式,運用于對象的時候可以分為對象模式。所謂類模式就是處理系統(tǒng)中的類與子類之間關(guān)系的模式,這些關(guān)系可以通過繼承的形式來建立,靜態(tài)的類模式在進行編譯的時候便要確定下來;所謂對象模式,就是處理對象之間關(guān)系的模式,這些關(guān)系在系統(tǒng)運行的時候是能夠不斷變化的,所以對象模式是動態(tài)的模式。
(一)創(chuàng)建型的軟件設(shè)計模式。創(chuàng)建型的設(shè)計模式是和對象的創(chuàng)建有著十分必然的關(guān)系,也就是說,在描述創(chuàng)建對象的時候,要將對象創(chuàng)建過程的具體細節(jié)進行隱藏設(shè)計,使得系統(tǒng)程序代碼能夠不依賴具體的對象。所以當我們需要在系統(tǒng)中增加個新的對象的時候,是不需要修改系統(tǒng)的源代碼的。創(chuàng)建型的類模式需要將對象當中的部分在子類當中進行延遲性的創(chuàng)建工作,而創(chuàng)建型的對象模式則是將對象的部分在另一個對象中進行延遲性的創(chuàng)建。
(二)結(jié)構(gòu)型的軟件設(shè)計模式。結(jié)構(gòu)型的軟件設(shè)計模式是處理類的和處理對象的設(shè)計模式的組合形式,也就是能夠描述類與對象之問的大的結(jié)構(gòu)如何組建起來,并且在組建之后還能夠擁有新的功能的種模式。結(jié)構(gòu)型的類模式是采用繼承性的機制來對類進行組合。而結(jié)構(gòu)型的對象模式則是能夠描述對象之間的組裝方式。
(三)行為型的軟件設(shè)計模式。所謂行為型的軟件設(shè)計模式所描述的是算法和對象之間所擁有的任務(wù)或者職責(zé)的分配情況,這其中不僅包括所需要的類或者對象需要的設(shè)計模式,還包括類和對象之間需要的通訊模式。這些模式的存在使得系統(tǒng)運行過程中難以追蹤的十分復(fù)雜的控制流得到了良好的刻畫。行為型的軟件設(shè)計模式是使用繼承機制來對類進行必要的分配工作,而在使用對象的時候是使用對象的復(fù)合而并非繼承,所要描述的是組對象是如何在合作的情況下完成單獨的對象無法獨自完成的任務(wù)。
二、軟件設(shè)計模式的選擇和應(yīng)用
通過上面介紹的面向?qū)ο蟮能浖O(shè)計模式,我們了解到軟件設(shè)計模式的存在能夠極大限度的幫助設(shè)計者用最快最好的方式來完成相關(guān)的軟件程序設(shè)計。而面對特殊的問題的時候,在已有的軟件設(shè)計模式中也可以十分方便的找到合適的軟件模式進行相關(guān)的程序設(shè)計,尤其是在面對軟件設(shè)計人員還不熟悉的新問題的時候。
在對軟件設(shè)計模式進行選擇的時候,應(yīng)該先理解問題所表現(xiàn)出來的需求,問題中所表現(xiàn)出來的任何需求都能夠在個或者幾個的問題領(lǐng)域中找到類似的地方,這種理解問題的需求再在不斷的尋找過程中找到可能需要的軟件設(shè)計模式或者軟件設(shè)計模式組的過程,對有效的選擇軟件設(shè)計模式從而完成軟件設(shè)計有著十分重要的作用;在了解了問題的需要并選擇了大概的軟件設(shè)計模式范圍之后,再就問題所表現(xiàn)出來的需求對軟件設(shè)計模式進行最終的選擇,并在選擇的過程中不斷了解這種軟件設(shè)計模式是如何解決這類型的問題的。每類軟件設(shè)計模式都能夠解決類軟件設(shè)計方面的問題,每個模式的存在都有其含義,對需要的軟件設(shè)計模式進行必要的了解,才能夠選擇最適合解決問題的軟件設(shè)計模式或者軟件設(shè)計模式組。與此同時,軟件設(shè)計模式有許多都是能夠相互補充的,所以在選擇合適的軟件設(shè)計模式的時候,應(yīng)該就設(shè)計模式之問的聯(lián)系要進行必要的研究,這對選擇出適合的軟件設(shè)計模式組有著十分重要的指導(dǎo)意義。尤其是在對個實際存在的問題進行程序設(shè)計的時候,更加應(yīng)該著重考慮可能影響到軟件設(shè)計的因素,研究這些因素是否會對系統(tǒng)產(chǎn)生不良影響。
在選擇了合適的軟件設(shè)計模式之后,就要把軟件設(shè)計模式合理的運用到系統(tǒng)的設(shè)計當中,這需要循序漸進的進行。是必須理解所選擇出來的軟件設(shè)計模式,能夠清楚的了解軟件設(shè)計模式最合適的使用環(huán)境以及在使用之后所能夠達到的效果,并且對其是否能夠解決實際存在的問題進行合理的判斷;二是研究模式的結(jié)構(gòu)、不同部位之間的關(guān)系和它們是如何進行合作的;三是就模式的參與者名字進行選擇;四是對類進行定義、聲明類之間的接口,建立不同類之間的關(guān)系,對代表的數(shù)據(jù)以及對象所引用的實例變量進行定義;六是對模式中專門用來應(yīng)用的操作名字進行定義;最后就是實現(xiàn)系統(tǒng)設(shè)計中執(zhí)行模式所包含的設(shè)計。
三、結(jié)語
總之,模式這個概念在很早的時候就已經(jīng)存在了,并且有很多的模式在現(xiàn)有的軟件系統(tǒng)設(shè)計中都已經(jīng)出現(xiàn)過了。在國外,對設(shè)計模式的研究工作進展十分迅速,他們總是能夠不斷的總結(jié)出新的軟件設(shè)計模式,而且很多的軟件設(shè)計開發(fā)工具與環(huán)境都對他們的開發(fā)工作進行了必要的支持,有些軟件設(shè)計模式的研究者還能夠讓設(shè)計模式運用形式化的表現(xiàn)模式由計算機自動生成需要的代碼。所以我們在對設(shè)計模式進行實踐的過程中,應(yīng)該不斷的總結(jié)發(fā)展,才能夠早日創(chuàng)造出新的軟件設(shè)計模式。