什麼是設計模式
設計模式是人們為軟體開發中相同表徵的問題,抽象出的可重複利用的解決方案。在某種程度上,設計模式已經代表了一些特定情況的最佳實踐,同時也起到了軟體工程師之間溝通的「行話」的作用。理解理解和掌握典型的設計模式,有利於我們提高溝通、設計的效率和質量。
大致按照模式的應用目標分類,設計模式可以分為建立型模式、結構型模式和行為型模式。
建立型模式,是對物件建立過程種的各種問題和解決方案的總結,包括各種工廠模式(factory、abstract factory)、單例模式(singleton)、構建器模式(builder)、原型模式(prototype)。
結構型模式,是針對軟體設計結構的總結,關注於類、物件繼承、組合方式的實踐經驗。常見的結構型模式,包括橋接模式bridge)、介面卡模式(adapter)、裝飾者模式(decorator)、**模式(proxy)、組合模式(composite)、外觀模式(facade)、享元模式(flyweight)等。
行為型模式,是從類或物件之間互動、職責劃分等角度總結的模式。比較常見的行為型模式有策略模式(strategy)、直譯器模式(interpreter)、命令模式(command)、觀察者模式(observer)、迭代器模式(iterator)、模板方法模式(template method)、訪問者模式(visitor)。
為了更進一步說明,我畫了乙個腦圖。下面是腦圖的截圖。
定義:乙個軟體實體如類、模組和函式應該對擴充套件開發,對修改關閉。
用抽象構建框接,用實現擴充套件細節
優點:提高軟體系統的可復用性及可維護性
實現開閉原則的核心思想,就是面向抽象程式設計,而不是面向具體的實現程式設計。
定義:高層模組不應該依賴低層模組,二者都應該依賴其抽象
抽象不應該依賴細節;細節應該依賴抽象
針對介面程式設計,不要針對實現程式設計
優點:可以減少類間的耦合性、提高系統穩定性,提高**可讀性和可維護性,可降低修改程式造成的風險。
定義:不要存在多於乙個導致類變更的原因
乙個類/介面/方法只負責一項職責
優點:降低類的複雜度、提高類的可讀性,提高系統的可維護性、降低變更引起的風險
定義:用多個專門的介面,而不使用單一的總介面,客戶端不應該依賴它不需要的介面。
注意:(1)乙個類對乙個類的依賴應該建立在最小的介面上;
(2)建立單一介面,不要建立龐大臃腫的介面;
(3)盡量細化介面,介面中的方法盡量少
(4)注意適度原則,一定要適度
優點:復合我們常說的高內聚低耦合的設計思想,從而使得類具有很好的可讀性、可擴充套件性和可維護性
定義:乙個物件應該對其他物件保持最少的了解。又叫最少知道原則
盡量降低類與類之間的耦合
優點:降低類之間的耦合、強調只和朋友交流,不和陌生人說話。
定義:如果對乙個型別為t1的物件o1,獨有型別為t2的物件o2,使得以t1定義的所有程式p在所有的物件o1都替換成o2時,程式p的行為沒有發生變化,那麼型別t2是型別t1的子型別。
定義擴充套件:
乙個軟體實體如果適用乙個父類的話,那一定適用於其子類,所有引用父類的地方必須能透明地使用其子類的物件,子類物件能夠替換父類物件,而程式邏輯不變。
優點:(1)約束繼承氾濫,開閉原則的一種體現
(2)加強程式的健壯性,同時變更時也可以做到非常好的相容性提高程式的維護性、擴充套件性。降低需求變更時引入的風險。
設計模式 六大設計原則
剛剛結束設計模式學習時,感覺哪哪的抓不住重點,雖然之前師傅給勾了寫比較重要的設計模式,但是給我的感覺設計模式怎麼全都乙個樣子。通過對一些文章的瀏覽,簡單的對設計原則總結了一下。設計模式,就是設計範例。是經典問題的解決方案,是可以讓學習者舉一反三的,有研究價值 有交流價值的例子。設計模式的本質是物件導...
設計模式 六大設計原則
solid s 單一職責原則 o 開放封閉原則 l 黎克特制代換原則 i 介面隔離原則 d 依賴倒轉原則 故事 手機拍攝ufo 定義 就乙個類而言,應該僅有乙個引起它變化的原因。通俗講就是我們不要讓乙個類承擔過多的職責。如果乙個類承擔的職責過多,就等於把這些職責耦合在一起,乙個職責的變化可能會削弱或...
設計模式的六大設計原則
1 單一指責原則 single responsibility principle,srp 每個類的功能單一,不能多功能 2 黎克特制替換原則 liskov substitution principle lsp,lsp 1.子類必須完全實現父類的方法 2.子類可以有自己的個性 3.覆蓋或實現父類的方法...