學習順序
設計模式
常用程度
適用層次
引入時機
結構複雜度
變化實現
體現的原則
1factory method
很常用**級
編碼時簡單
子類的例項化
物件的建立工作延遲到子類
開閉原則
2singleton
很常用**級、應用級
設計時、編碼時
簡單唯一例項
封裝物件產生的個數
3facade
很常用應用級、構架級
設計時、編碼時
簡單子系統的高層介面
封裝子系統
開閉原則
4template method
很常用**級
編碼時、重構時
簡單算法子步驟的變化
封裝演算法結構
依賴倒置原則
5abstract factory
比較常用
應用級設計時
比較複雜
產品家族的擴充套件
封裝產品族系列內容的建立
開閉原則
6composite
比較常用
**級編碼時、重構時
比較複雜
複雜物件介面的統一
統一複雜物件的介面
黎克特制代換原則
7proxy
比較常用
應用級、構架級
設計時、編碼時
簡單物件訪問的變化
封裝物件的訪問過程
黎克特制代換原則
8command
比較常用
應用級設計時、編碼時
比較簡單
請求的變化
封裝行為對物件
開閉原則
9observer
比較常用
應用級、構架級
設計時、編碼時
比較簡單
通訊物件的變化
封裝物件通知
開閉原則
10strategy
比較常用
應用級設計時
一般演算法的變化
封裝演算法
黎克特制代換原則
11builder
一般**級
編碼時一般
物件組建的變化
封裝物件的組建過程
開閉原則
12adapter
一般**級
重構時一般
物件介面的變化
介面的轉換
13bridge
一般**級
設計時、編碼時
一般物件的多維度變化
分離介面以及實現
開閉原則
14decorator
一般**級
重構時比較複雜
物件的組合職責
在穩定介面上擴充套件
開閉原則
15iterator
一般**級、應用級
編碼時、重構時
比較簡單
物件內部集合的變化
封裝物件內部集合的使用
單一職責原則
16mediator
一般應用級、構架級
編碼時、重構時
一般物件互動的變化
封裝物件間的互動
開閉原則
17memento
一般**級
編碼時比較簡單
狀態的輔助儲存
封裝物件狀態的變化
介面隔離原則
18state
一般應用級
設計時、編碼時
一般物件狀態的變化
封裝與狀態相關的行為
單一職責原則
19visitor
一般應用級
設計時比較複雜
物件操作變化
封裝物件操作變化
開閉原則
20prototype
不太常用
應用級編碼時、重構時
比較簡單
例項化的類
封裝對原型的拷貝
依賴倒置原則
21flyweight
不太常用
**級、應用級
設計時一般
系統開銷的優化
封裝物件的獲取
22chain of resp.
不太常用
應用級、構架級
設計時、編碼時
比較複雜
物件的請求過程
封裝物件的責任範圍
23interpreter
不太常用
應用級設計時
比較複雜
領域問題的變化
封裝特定領域的變化
學會乙個專案中嘗試有相應的場景使用乙個才是王道。
電子學習設計建議
本人是乙個普普通通聯辦應用型本科的學生,現在在一家方案型電子公司擔任電子模組研發的工作,最喜歡的事情是研究電子,最愛看的書是模擬電子技術基礎,因為當初學習模電的磕磕絆絆和一臉懵逼,到現在的逐漸清醒,我決定趁著閒暇時間,把個人學習模電的經驗告訴大家,並和大家一起學習。當初我學模電,一方面是因為我的啟蒙...
學習設計模式 原型設計模式
先想一下既然要建立新的例項,為什麼不直接使用 new 而要設計出乙個原型模式進行例項的複製呢?這是因為 有的時候,我們也會在不指定類名的前提下生成例項,例如像圖形編輯器中拖動現有的模型工具製作圖形的例項,這種是非常典型的生成例項的過程太過複雜,很難根據類來生成例項場景,因此需要根據現有的例項來生成新...
設計模式學習
知道設計模式已經很久了,但是一直沒有認真的去系統的學習,這幾天才開始逐漸的學習起來。下面是我學習設計模式的一些心得。要想成為一名優秀的軟體設計師或軟體架構設計師,了解一些設計模式是很有必要的。我認為學習設計模式的思路如下 一 基本概念 理解物件導向 理解重用等概念性的東西 1.什麼是物件導向?2.物...