摘要:設(shè)計(jì)模式是一套能夠被重復(fù)使用、經(jīng)過分類的、多人協(xié)作的代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié), 在軟件設(shè)計(jì)中有著重要作用, 可以讓軟件代碼可靠性更高, 更容易被人理解。本文介紹了設(shè)計(jì)模式的概念, 并對其進(jìn)行了簡單的分類, 闡述了設(shè)計(jì)模式的選擇以及應(yīng)用。
關(guān)鍵詞:軟件設(shè)計(jì),設(shè)計(jì)模式,應(yīng)用
在信息技術(shù)快速發(fā)展的今天, 許多工作領(lǐng)域都離不開軟件設(shè)計(jì), 軟件可以大大提高人們的工作效率, 給人們帶來很大的便利。在軟件設(shè)計(jì)中, 設(shè)計(jì)模式的合理利用可以讓相關(guān)軟件代碼能夠得到重復(fù)使用, 提高軟件設(shè)計(jì)的效率, 同時(shí)還增強(qiáng)了軟件代碼的可靠性。目前軟件設(shè)計(jì)模式已經(jīng)取得了一定的成果, 但是從社會需求和社會發(fā)展而言, 設(shè)計(jì)模式還有著很大的提升空間, 在這種的背景下, 研究軟件設(shè)計(jì)模式對于相關(guān)從業(yè)人員而言, 具有一定的借鑒意義。
1 設(shè)計(jì)模式的概述
在面對對象的軟件設(shè)計(jì)中, 通常會有許多問題會重復(fù)出現(xiàn)。解決這些問題的有效辦法就是設(shè)計(jì)模式, 設(shè)計(jì)模式的概念最早是從建筑學(xué)中誕生的, 當(dāng)初主要是為了讓建筑設(shè)計(jì)人員解決在設(shè)計(jì)時(shí)遇到的重復(fù)問題。隨著技術(shù)的發(fā)展, 設(shè)計(jì)模式逐漸從建筑領(lǐng)域轉(zhuǎn)化為計(jì)算機(jī)領(lǐng)域, 主要關(guān)注的是面向?qū)ο筌浖O(shè)計(jì)中容易出現(xiàn)的重復(fù)問題, 不同的設(shè)計(jì)模式都有著各自特有的強(qiáng)度和語境, 強(qiáng)度在設(shè)計(jì)模式中作為語境的元素, 而強(qiáng)度則是對設(shè)計(jì)模式的使用情況進(jìn)行解釋。在軟件設(shè)計(jì)中, 設(shè)計(jì)模式主要完成對多數(shù)驗(yàn)證正確的提煉和記錄。
2 設(shè)計(jì)模式的分類
不同的設(shè)計(jì)模式都有著各自的適用環(huán)境和特點(diǎn), 在進(jìn)行模式的選取之前, 首先要了解不同的設(shè)計(jì)模式, 只有這樣, 才可以在實(shí)際的軟件設(shè)計(jì)中靈活運(yùn)用, 常見的設(shè)計(jì)模式包括以下幾種:
2.1 享元模式
在軟件設(shè)計(jì)中, 經(jīng)常會遇到很多共性較大、相似的對象, 這種情況對系統(tǒng)的性能會產(chǎn)生一定的負(fù)面影響。享元模式可以較好的解決這個(gè)問題, 該模式可以提取多個(gè)對象的相似信息, 并將他們分類成為新的Flyweight對象, 如果要對原來的信息進(jìn)行復(fù)原的話, 可以在Flyweight對象中進(jìn)行, 這樣可以有效地減少設(shè)計(jì)中程序?qū)ο蟮膭?chuàng)建, 減小內(nèi)存的占用率, 同時(shí)提高軟件程序的性能。
2.2 Observer模式
該設(shè)計(jì)模式可以在軟件對象中建立一對多的對應(yīng)關(guān)系, 如果此模式中的一個(gè)對象發(fā)生變化時(shí), 建立對應(yīng)關(guān)系的其他對象也會及時(shí)更新。在軟件的界面設(shè)計(jì)中, Observer模式的應(yīng)用較為廣泛, 在軟件開發(fā)過程中, 往往需要把軟件的業(yè)務(wù)邏輯同用戶的界面分離開, 而Observer模式則可以有效地避免這種情況的發(fā)生。同時(shí), Observer模式還可以很好的解決對象之間的狀態(tài)同步問題, 如果一個(gè)用戶視圖的數(shù)據(jù)發(fā)生更改后, 相應(yīng)的后臺數(shù)據(jù)庫也會進(jìn)行同步的自動更新。
2.3 組合模式
組合模式主要功能是把軟件對象劃分為“整體-部分”的層次, 也就是樹狀結(jié)構(gòu), 可以有效地使單個(gè)對象和復(fù)合對象在實(shí)際的使用時(shí)能夠保持較好的一致性。在軟件界面設(shè)計(jì)中, 組合模式的應(yīng)用也十分廣泛, 比如可以利用此模式操作圖形對象, 能夠有效地提高代碼的可重復(fù)程度, 使軟件設(shè)計(jì)更加規(guī)范。
3 設(shè)計(jì)模式的選取和在軟件設(shè)計(jì)中的應(yīng)用
目前設(shè)計(jì)模式在軟件設(shè)計(jì)中的應(yīng)用主要表現(xiàn)在:
(1) 在進(jìn)行軟件開發(fā)之前, 就把設(shè)計(jì)模式計(jì)劃應(yīng)用到設(shè)計(jì)的多個(gè)環(huán)節(jié)之中;
(2) 在軟件設(shè)計(jì)的過程中, 相關(guān)的工作已經(jīng)開展, 例如軟件結(jié)構(gòu)已初步設(shè)計(jì)完成后, 為了保證軟件的組件和模塊更加靈活, 從而應(yīng)用設(shè)計(jì)模式。
3.1 設(shè)計(jì)模式的選取
3.1.1 設(shè)計(jì)模式的選擇
在選擇設(shè)計(jì)模式時(shí)往往要考慮多方面的因素:
(1) 要充分考慮軟件設(shè)計(jì)過程中的可變因素;
(2) 充分考慮不同的設(shè)計(jì)模式可以解決哪些問題以及他們各自的工作原理;
(3) 了解瀏覽模式的意圖;
(4) 充分比較研究多個(gè)相似的模式;
(5) 了解不同的分析模式之間如何進(jìn)行連接。
3.1.2 設(shè)計(jì)模式的選擇步驟
為了能夠在設(shè)計(jì)軟件中高效地應(yīng)用設(shè)計(jì)模式, 選擇的步驟主要包括:
(1) 將要解決的問題抽象化, 并進(jìn)行合理科學(xué)的劃分;
(2) 根據(jù)實(shí)際問題的不同選擇合適的設(shè)計(jì)模式;
(3) 將問題進(jìn)行規(guī)劃并匹配設(shè)計(jì)模式;
(4) 將選擇的模式進(jìn)行變體, 適當(dāng)?shù)男薷暮驼{(diào)整設(shè)計(jì)模式的原始結(jié)構(gòu), 便于有問題的解決;
(5) 細(xì)化軟件體系的結(jié)構(gòu);
(6) 衡量度量設(shè)計(jì)的質(zhì)量。
3.2 設(shè)計(jì)模式的應(yīng)用
選取合適的設(shè)計(jì)模式后, 如何科學(xué)合理的應(yīng)用也十分重要:
(1) 詳細(xì)了解設(shè)計(jì)模式;
(2) 仔細(xì)觀察代碼示例部分和形式案例;
(3) 明確模式參與者在應(yīng)用中的實(shí)際意義;
(4) 需要定義類;
(5) 使用專門的操作名稱, 便于軟件設(shè)計(jì)中多人協(xié)作的良好實(shí)現(xiàn)。
4 結(jié)語
在面向?qū)ο蟮能浖O(shè)計(jì)領(lǐng)域, 設(shè)計(jì)模式得到了廣泛的應(yīng)用, 同時(shí)也有許多新的研究成果誕生。相信在今后的軟件設(shè)計(jì), 特別是面向?qū)ο筌浖O(shè)計(jì)中, 設(shè)計(jì)模式將會得到更好的發(fā)展和應(yīng)用。
參考文獻(xiàn)
[1]周宇, 趙洪達(dá), 張倩雯.軟件設(shè)計(jì)模式課程實(shí)驗(yàn)教學(xué)系統(tǒng)探索[J].計(jì)算機(jī)系統(tǒng)應(yīng)用, 2017, 26 (05) :86-90.
[2]段群, 吳粉俠, 歐陽宏基.軟件設(shè)計(jì)模式在目標(biāo)考核系統(tǒng)中的應(yīng)用[J].自動化技術(shù)與應(yīng)用, 2017, 36 (09) :60-63.
[3]張偉奇.軟件設(shè)計(jì)模式在氣象觀測軟件開發(fā)中的應(yīng)用[J].儀器儀表用戶, 2017, 24 (10) :68-71.
[4]張璞, 夏英.軟件設(shè)計(jì)模式在Java程序設(shè)計(jì)課程教學(xué)中的應(yīng)用研究[J].軟件工程, 2017, 20 (07) :15-18.