設計模式總綱

2021-08-21 01:47:32 字數 2304 閱讀 2234

這篇是對劉偉《設計模式》的總結,gof23總共分為建立型、結構型、行為型三類。

uml:抽象為實,介面為虛

建立型  --  5

(1)簡單工廠模式、工廠模式、抽象工廠模式的區別

三種模式的區別

模式名稱

理解簡單工廠模式

工廠類是核心類,包含複雜的邏輯結構

工廠模式

一種抽象工廠只能生產一種產品

抽象工廠模式

產品等級結構

(2)工廠方法模式引入了抽象的工廠類,而將具體產品的建立過程封裝在抽象工廠類的子類,也就是具體工廠類中。

(3)聚合和組合的區別 -- 前聚空後主實

聚合  --  注入   組合  --  生命週期

兩者都表示乙個整體與部分的關係

(4)建造者 -- 指揮者

(5)原型模式 -- 深轉殖/淺轉殖 -- clone()函式

(6)單例模式的三要點:一是某個類只能有乙個例項;二是它必須自行建立這個例項;三是它必須自行向整個系統提供這個例項。

結構型 --  7

(1)結構型模式關注如何將現有或現有物件組織在一起形成更加強大的結構

(2)合成復用原則->在系統中應當盡量使用關聯關係來替代繼承關係

(3)extend  繼承 --  super  -- 具體類

extend  抽象類

implements 介面實現

(4)介面卡模式

(5)橋接模式 -- 橋接模式將繼承關係轉換為關聯關係,從而降低了類與類之間的耦合,減少了**編寫量。

(6)組合模式 -- 形成樹形結構 -- p186

容器構件類既有繼承的關係,又有組合關係

(7)裝飾模式 -- 一種用於替代繼承的技術,它通過一種無須定義子類的方式來給物件動態增加職責,使用物件之間的關聯關係取代類之間的繼承

final   

(8)外觀模式 -- 提供了統一的入口  -- 外觀類和子系統之間的關係

p225 外觀模式的注意點:

1. 不要試圖通過外觀類為子系統增加新的行為

2. 符合迪公尺特法則

(9)享元模式

存在大量相同或相似的物件 -- 通過共享技術實現相同或相似的細粒度物件的復用

(10)**模式

通過乙個**物件來間接訪問某些直接訪問會出錯誤的物件

行為型 --  11

行為型模式關注系統中物件之間的相互互動,研究系統在執行時物件之間的相互通訊與協作,進一步明確物件的職責。

(1)職責鏈模式

p265 假條審批 -- 將請求沿著進行傳遞

(2)命令模式

p278 電視遙控器遙控器 -> 按鈕 -> 電視機

將請求傳送者與請求接收者解耦,請求傳送者通過命令物件來間接引用接收者。

(3)直譯器模式

用於描述如何構成乙個簡單的語言直譯器,主要應用於使用物件導向語言開發的編譯器和直譯器設計。

(4)迭代器模式

用於對乙個聚合物件進行遍歷聚合物件-- 列表(list)/ 集合(set)

p309

(5)中介者模式

聯合國 /  qq群

可以將系統的網狀結構轉換為以中介者為中心的星狀結構,中介者承擔中轉和協調的作用

(6)備忘錄模式

軟體系統的「月光寶盒」   --撤銷操作

(7)觀察者模式

p350  定義物件間的一種一對多依賴關係,使得每當乙個物件狀態發生改變時,其相關依賴物件皆得到通知並被自動更新

觀察目標不需要了解其具體觀察者,只需要知道它們都有乙個共同的介面即可。

(8)狀態模式

p372

(9)策略模式

用於演算法的自由切換和擴充套件

(10)模板方法模式

定義乙個操作中演算法的骨架,而將一些步驟延遲到子類中。

(11)訪問者模式

p414

設計模式目錄總綱

android的設計模式 設計模式的六大原則 一句話總結23種設計模式則 建立型模式 android的設計模式 單例模式 android的設計模式 建造者模式 android的設計模式 工廠方法模式 android的設計模式 簡單工廠模式 android的設計模式 抽象工廠模式 android的設計...

專題總綱目錄 Linux總綱

專題總綱說明 本系列文章雖說是linux的知識體系專題,同時也是學習linux系統 尤其是嵌入式系統 系統的乙個思路,尤其是當我們對linux系統一點都不了解的時候,但前提是要有 一定的linux系統基礎和c c 基礎,常用的資料結構和演算法,作業系統知識,網路知識。目錄 1 linux環境 2 l...

android app 優化總綱

布局優化 響應優化 記憶體優化 電量優化 網路優化 2 測試布局是否需要優化 使用工具hierarchy viewer,和lint 3 測試響應是否需要優化 響應優化的範疇 避免anr和卡頓 目測可以。4 測試是否需要記憶體優化 記憶體需要優化的範疇 記憶體洩漏,記憶體溢位,記憶體抖動 leakca...