什麼是設計模式
設計模式有甚多不同的表述:
設計模式是一種對問題本質的通用解決方案。
從設計或重構的角度來講:
設計模式是對軟體中可變性封裝的通用的框架(可變性是軟體中容易變化的部分)。
軟體設計的目標是可擴充套件性,可插入性,靈活性。
可擴充套件性:新的功能可以很容易的加入到系統中去。
可插入性:可以很容易的將乙個類抽出去,同時將另外乙個有同樣介面的類加入進來。
靈活性:可以允許平穩的修改**,而不會涉及到很多的其他模組。
軟體中不可避免的含有很多可變性,為了實現軟體設計的目標,必然要對可變性做封裝。
如何對這種可變性做封裝呢?
封裝必須遵照一定的原則:
1,一種可變性不應當散落在**的很多地方,而應當被封裝在乙個物件裡面。
同一種可變性的不同表象意味著同乙個繼承等級結構中的不同子類!
2.一種可變性不應當與另外一種可變性混合在一起。
基於這2個原則,任何人都可以在自己的系統中封裝可變性,但是封裝的好壞見仁見智。
但是乙個良好的封裝應當遵守6個原則。
設計模式6大原則
開閉原則:
乙個軟體應當對擴充套件開放,對修改關閉。
黎克特制代換原則:
任何基類出現的地方,子類一定可以出現。
依賴倒轉原則:
要依賴於抽象,不要依賴於實現。開閉原則是目標,依賴倒轉原則是實現開閉原則的手段。
合成/聚合復用原則:
要盡量使用合成/聚合,而不是繼承關係達到復用的目的。
迪公尺特法則:
乙個實體(事物在軟體中的抽象,比如乙個person類表示乙個人,也是乙個實體)應當盡可能少的與其他實體相互作用。
介面隔離原則:
應當提供單獨的專業的介面而不是大而全的總介面。
以下是各個原則對應的體現的比較明顯的設計模式:
開閉原則-策略模式
黎克特制代換原則-**模式,策略模式
依賴倒轉原則-工廠方法模式,模板方法模式
介面隔離原則-備忘錄模式(服務定製)
合成/聚合復用原則-**模式等
迪公尺特法則-門面模式,調停者模式
21種設計模式歸為三大類,建立模式,結構模式,行為模式
建立模式
建立模式是對類的例項化過程的抽象化。是對例項建立可變性的封裝。
一些系統在建立物件時,需要動態決定怎麼建立物件,建立那些物件,如何組合和表示這些物件。
建立模式描述了怎樣構造和封裝這些動態的決定。
建立模式分為類的建立模式和物件的建立模式2種。
主要的設計模式有:簡單工廠模式,工廠方法模式,抽象工廠模式,單利模式,多例模式,建造模式,原型模式。
結構模式
描述如何將類或者物件結合在一起形成更大的結構。是對類或物件之間的組合可變性的封裝。
分為類的結構模式和物件的結構模式2種。
主要有:介面卡模式,預設適配模式,合成模式,裝飾模式,**模式,享元模式,門面模式,橋梁模式。
行為模式
是對不同的物件之間責任劃分和演算法的抽象化。即是對責任劃分過程或演算法的可變性的封裝。
分為類的行為模式和物件的行為模式
類的行為模式使用繼承關係在幾個類之間分配行為或責任。
物件的行為模式則使用物件的聚合來分配行為或責任。
主要有:不變模式,策略模式,模板方法模式,觀察者模式,迭代子模式,責任鏈模式,命令模式,備忘錄模式,狀態模式,訪問者模式,直譯器模式,調停者模式。
學習設計模式的時候一定要問自己乙個問題:
這個設計模式封裝了什麼可變性(這個設計模式允許那個部分變化),為了封裝這個可變性付出了什麼代價?
設計模式是什麼
建立型模式 共五種 工廠方法模式 抽象工廠模式 單例模式 建造者模式 原型模式。結構型模式 共七種 介面卡模式 裝飾器模式 模式 外觀模式 橋接模式 組合模式 享元模式。行為型模式 共十一種 策略模式 模板方法模式 觀察者模式 迭代子模式 責任鏈模式 命令模式 備忘錄模式 狀態模式 訪問者模式 中介...
設計模式是什麼
設計模式 design pattern 代表了最佳的實踐,通常被有經驗的物件導向的軟體開發人員所採用。設計模式是軟體開發人員在軟體開發過程中面臨的一般問題的解決方案。這些解決方案是眾多軟體開發人員經過相當長的一段時間的試驗和錯誤總結出來的。設計模式是一套被反覆使用的 多數人知曉的 經過分類編目的 設...
1,設計模式是什麼
1,概念 在軟體開發中,經過驗證的,用於解決在特定環境下,重複出現的,特定問題的解決方案 2,語句分析法 模 模型,模板,式 方法 方式 3,理解 7,設計模式和物件導向設計原則 物件導向設計原則有很多原則,大都是是思想原則,指出物件導向分析設計的正確方向 設計模式 針對某個場景下某些特定問題的某個...