設計模式(Design pattern)代表了最佳的實踐,通常被有經驗的面向對象的軟體開發人員所採用。設計模式是軟體開發人員在軟體開發過程中面臨的一般問題的解決方案。這些解決方案是眾多軟體開發人員經過相當長的一段時間的試驗和錯誤總結出來的。

設計模式是一套被反覆使用的、多數人知曉的、經過分類編目的、代碼設計經驗的總結。使用設計模式是為了重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。 毫無疑問,設計模式於己於他人於系統都是多贏的,設計模式使代碼編製真正工程化,設計模式是軟體工程的基石,如同大廈的一塊塊磚石一樣。項目中合理地運用設計模式可以完美地解決很多問題,每種模式在現實中都有相應的原理來與之對應,每種模式都描述了一個在我們周圍不斷重複發生的問題,以及該問題的核心解決方案,這也是設計模式能被廣泛應用的原因。

學習設計模式雖然在代碼方面無法給學習的人指導,它不能讓你一下子就成為一門語言的精通者,也無法讓你可以更好的找到工作,升職加薪,甚至在學習完設計模式以後你可能會覺得什麼事情都沒有發生,一點作用也沒有,但是設計模式又是十分重要的,因為它潛移默化地改變著你的思維,讓你在未來的日子裡面快人一步。

在接下來的一系列裡面,我將通過自身的理解來講解常見的23中設計模式。

在學習具體的設計模式以前,我們先來看一下設計模式的六大原則。

1.開閉原則

開閉原則:對擴展開發,對修改關閉。

在代碼層面而言就是在你有新的需求的時候,你應當增加新的對象來實現,而不是修改原來的對象。

2.里氏代換原則

里氏代換原則:任何基類出現的地方,子類一定可以出現。

我將它稱為父子代換原則,這也是為什麼Java裡面老是用介面或者抽象來作為參數然後傳入的是子類或者實現的原因。因為介面與抽象存在的地方,都可以用它的實現或者子類來替換。其實這樣也就實現了開閉原則。(看官好好想想)

3.依賴倒轉原則

依賴倒轉原則:針對介面編程,依賴與抽象而不是具體類。

為什麼要這樣?因為這樣的話就可以實現多樣性。統一用介面「鳥」作為參數,統一調用「鳥」的fly方法,但是傳入的則是鴕鳥,企鵝,燕子等不同的具體實例,那麼fly的表現形式就不同了,但是你又不需要修改調用代碼,因為你是根據介面編程的。

4.介面隔離原則

介面隔離原則 :使用多個隔離的介面,降低介面的偶合。

簡而言之就是單一責任原則:就一個類來說,它應當只做一件事情,只有一個引起它變化的原因。

5.迪米特法則

迪米特法則:一個實體應當盡量少的與其他實體之間發生相互作用。

這個也被稱為最少知道原則。

6.合成復用原則

合成復用原則:盡量使用合成/聚合的方式,而不是使用繼承。

因為寫個抽象類或者介面實在是太麻煩了!!!

設計模式一般來是是面向對象設計的,面向對象的設計就是希望做到代碼的職責分解。牢記這點會對你理解設計模式有很大的幫助。


推薦閱讀:
相关文章