基於軟件開發下外觀模式的改進研究論文
外觀模式是使用頻率較高的軟件設計模式之一。針對標準外觀模式所存在的問題,本文提出了兩種外觀模式改進方案並結合實例進行研究。透過引入抽象外觀類,讓系統具有良好的可擴展性,滿足開閉原則;透過對外觀類實施單例化,可以確保外觀對象的唯一性,節約系統資源。
1 引言
設計模式在軟件開發中應用日益廣泛,它們是前人經驗的總結與積累,每一種模式均是在多個軟件項目中被反覆使用、被多數人知曉,且經過規範的分類編目和整理的面向對象設計經驗的總結。
外觀模式是使用頻率較高的軟件設計模式之一,在軟件開發中應用非常廣泛。根據單一職責原則,將一個大的軟件模組(或子系統)進行分解可以降低整個系統的複雜性,提高單個模組(或子系統)的獨立性和可複用性。透過引入外觀角色,可以降低客戶類與子系統類之間的耦合度,使之相互依賴關係降至最小,從而降低原有系統的複雜度。在沒有外觀角色的系統中,客戶類需要與多個子系統類進行交互,系統耦合度較高;在引入外觀角色之後,客戶類只需要與外觀類交互,再透過外觀類間接調用子系統類,在外觀類中封裝了與子系統之間的複雜交互關係,從而降低系統的耦合度。
但是,在標準的外觀模式中存在兩個問題:首先,標準外觀模式沒有提供抽象層,在增加、更換或者刪除子系統類時需要修改客戶類或者外觀類的原始碼,違背了開閉原則;其次,外觀類維持了對多個子系統類的引用,在系統執行時,外觀對象勢必會佔用較多的系統資源,需要對外觀對象的數量進行限制。
2 外觀模式的改進方案
針對標準外觀模式存在的問題和缺陷,本文提出了相應的改進方案,包括引入抽象外觀類以及對外觀類實施單例化。
2.1 抽象外觀類的引入
爲了讓外觀模式能夠符合開閉原則,引入抽象外觀類來對外觀模式進行抽象化改進。客戶端針對抽象外觀類進行編程,將所有的具體外觀類作爲抽象外觀類的子類,如果需要更改業務需求,無須修改原有外觀類,只需要增加一個新的具體外觀類即可,由新的外觀類來關聯新的業務需求。透過使用配置檔案,可以達到不修改任何原始碼即可置換外觀類的目的,如圖1所示。
2.2 外觀類的單例化
在大多數情況下,爲了節約系統資源,程序在執行時只需創建某個外觀類的唯一實例。因此,可以將外觀模式與單例模式聯用,對外觀類實施單例化,確保系統中只存在唯一一個外觀對象並提供唯一的訪問入口,可以降低系統資源的消耗。單例化後的外觀類的結構如圖2所示。
在圖2中,外觀類Facade被設計爲單例類,在其中定義了一個靜態的de類型的成員變量instance,其構造函數爲私有的(private),並透過一個靜態的公有工廠方法getInstance()返回自己的唯一實例。
3 實例研究
下面透過一個實例來說明如何在實際項目中使用改進後的外觀模式。
在某使用外觀模式的檔案加密模組的初始設計方案中,FileReader類用於讀取待加密的源檔案、FileWriter類用於儲存加密之後的檔案、Cipher類用於實現數據的加密,EncryptFacade是一個加密外觀類,它透過調用三個業務類中的方法實現檔案讀取、加密和儲存的完整流程。
3.1 抽象化改進
如果需要將原系統中的加密類Cipher改爲NewCipher,勢必會導致外觀類EncryptFacade原始碼發生修改,違背開閉原則。透過引入抽象外觀類,重構後的系統設計方案如圖3所示,在圖3中使用了基於衍型的模式標註方法SBPN (Stereotype Based Pattern Notation)來對結構圖中的設計模式資訊進行標註。
在圖3中,客戶類Client針對抽象外觀類AbstractEncryptFacade進行編程,可將具體外觀類類名存儲在XML等格式的配置檔案中,更換具體外觀類時只需修改配置檔案,無須修改原始碼,符合開閉原則。
3.2 單例化改進
爲了節省系統資源,可以將EncryptFacade設計爲單例類,改進之後的結構如圖4所示。
透過對外觀類實施單例化,可以確保系統中有且僅有一個EncryptFacade類的實例,避免生成多個EncryptFacade對象,節約系統資源。
4 結束語
外觀模式是一種使用頻率非常高的設計模式,在軟件開發中應用廣泛。針對標準外觀模式存在的不足,本文提出了兩種外觀模式的改進方案:第一種方案透過引入抽象外觀類,使得系統在增加、刪除或者更換子系統類時無須修改已有類的原始碼,可以對抽象外觀類進行擴展來適應設計方案的改變,讓系統滿足開閉原則;第二種方案透過對外觀類單例化,將外觀模式與單例模式聯用,確保在系統中只存在外觀類的唯一實例,節約系統資源。透過上述改進,可以提高外觀模式的適用性和有效性。
-
隨機應變有技巧的論文
隨機應變有技巧人際交往中,有時會因突發事件陷入被動尷尬的困境,此時若能隨機應變,拿出對策,就可以化被動爲主動,巧妙解圍。如何隨機應變是好呢?下面給同學談三種應變之術。即景生情某些場合由於臨時事變,給當事人設下難題,此時如能就地取材,巧借環境,便能激活氣氛,擺脫...
-
煤炭企業醫療保險特點的相關建議論文
摘要:煤炭行業屬於比較危險的行業,作爲煤炭企業的員工定不能沒有醫療保險,醫療保險是煤炭企業生活的基本保障之一,是企業職工全身心工作的保證,促進煤炭行業的發展。文章對煤炭企業醫療保險的特點即所存在的問題進行了詳細分析,結合公司的實際情況,提出了加強煤炭企業...
-
關於小論文作文集合5篇
無論是在學習還是在工作中,許多人都寫過論文吧,論文是進行各個學術領域研究和描述學術研究成果的一種說理文章。怎麼寫論文才能避免踩雷呢?以下是小編整理的小論文作文5篇,歡迎大家分享。小論文作文篇1一、神奇的墨水一天,我在一本科學書上看到糖水可以製作隱形的墨...
-
“虛擬實際”下的職業學院會計教學的論文
摘要:會計學在社會的發展過程中發揮着重要作用,是應用型學科,在教學上應該更加註重實際操作,強調學生的實際動手能力,講究實踐方法。本文就是基於職業學院的情況,結合會計本身的特點,對學生採用“虛擬實際”的教學方法,從而充分的發揮學生的會計覈算技能。關鍵詞:虛擬實...