淺談軟件設計模式的應用場景(一)

提到軟件設計模式,大家並不陌生,許多的書上面都有很細緻深刻的講解。比如《設計模式》,《設計模式解析》,《重構與模式》等等,許多的書講得都比較抽象,概念性都比較強,也有一些比較趣味易懂的書,如《大話設計模式》,這本書非常適合對面向對象編程有了一定的基礎認識,並且想更進一步的去提高在軟件的設計思想和原則方面進行提高的人羣。以下內容是我自己學習了軟件設計模式之後的一些自己的見解,對常用的軟件設計模式在應用場景上進行一個簡單的介紹,僅供參考。

設計模式其實並不是什麼新的知識或者說是一個比較難以去學習的東西,他只是在面向對象編程的思想基礎上,運用面向對象編程的基本思想去合理的組織代碼結構,通過繼承、多態、封裝等特性來對程序進行重構,以達到各類預期的效果,如可擴展性,易維護性,易複用等特點,減少在軟件開發過程中因爲需求的不段變化而導致程序的更改愈加困難。

學習了設計模式以及一些原則之後,切忌不可在自己的實際運用過程中,強行的按照設計模式原則的方式進行硬性模仿,世上沒有絕對的東西,這些設計模式有的可能會互相互補,也有互相矛盾之處,都是前人在長期的軟件開發過程中總結出來的一些比較好的思想,大家要根據自己的實際場景進行有所取捨的運用,主要是讓你從思想上對面向對象程序編程有一個高度的認識。

       簡單工廠模式(SimpleFactory Method):簡單工廠模式是由一個工廠對象決定創建出哪一種具體產品類的實例,適用於創建對象少,對創建對象的過程不關心,由客戶端傳入工廠類的參數,變可獲得對應的實例對象。由於簡單工廠很容易違反高內聚責任分配原則,因此一般只在很簡單的情況下應用。

策略模式(Strategy):策略模式是一種定義一系列算法的方法,從概念上來看,所有這些算法完成的都是相同的工作,只是實現不同,它可以以相同的方式調用所有的算法,減少了各種算法類與使用算法類之間的耦合。策略模式就是用來封裝算法的,但是在實踐中,我們發現可以用來封裝幾乎任何類型的規則,只要在分析過程中聽到需要在不同的時間應用不同的規則,就可以考慮使用策略模式處理這種變化的可能性。

單一職責原則(SRP):就一個類而言,應該僅有一個引起它變化的原因。如果一個類承擔的職責過多,就等於把這些職責耦合在一起,一個職責的變化可能會削弱或者抑制這個類完成其他職責的的能力。這種耦合會導致脆弱的設計,當變化發生時,設計會遭受到意想不到的破壞。軟件設計真正要做的許多內容,就是發現職責並把那些職責相互分離,如果你能夠想到多餘一個的動機去改變一個類,那麼這個類就具有多於一個的職責。

開放封閉原則(OCP,Open Closed Principle):無論模塊是多麼的“封閉”,都會存在一些無法對之封閉的變化,既然不可能完全封閉,設計人員必須對於他設計的模塊應該對哪種變化封閉做出選擇,他必須先猜測出最具有可能發生變化的種類,然後構造抽象來隔離那些變化。遵循這個原則可以帶來面向對象技術所聲稱的巨大好處,也就是可維護,可擴展,可複用,靈活性好。開發人員應該僅對程序中呈現出頻繁變化的那些部分做出抽象,然後,對於應用程序中的每個部分都刻意地進行抽象同樣不是一個好主意。拒絕不成熟的抽象和抽象本事一樣重要。

里氏代換原則(LSP):一個軟件實體如果使用的是一個父類的話,那麼一定適用於其子類,而且它察覺不出父類對象和子類對象的區別。也就是說,在軟件裏面,把父類都替換成它的子類,程序的行爲沒有變化。如果編寫時考慮的都是如何針對抽象編程而不是針對細節編程,即程序中所有的依賴關係都是終止於抽象類或者接口,那就是面向對象的設計,反之那就是過程化的設計了。

裝飾模式(Decorator Pattern):裝飾模式是在不必改變原類文件和使用繼承的情況下,動態的擴展一個對象的功能。它是通過創建一個包裝對象,也就是裝飾來包裹真實的對象。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章