設計模式學習記錄

2021-06-16 23:02:33 字數 1828 閱讀 7793

工廠模式

實際上是把乙個類的例項化通過乙個工廠類來推遲例項化,例項化的過程是通過實現介面來返回乙個型別。這樣做的弊病是乙個類只能返回一種型別,如果過載就會形成命名衝突,所以更常用的是在工廠類裡面新增多個靜態的實現方法,這樣就可以實現各種不同的型別了。

抽象工廠

抽象工廠就是在實現介面裡面包含了各種類似的功能,比如兩個不同風格的按鈕可以有很多相同是屬性和方法,這些方法可以抽象到介面裡面以便例項化的時候去實現,基於工廠模式。

生成器模式

感覺就像是把乙個擁有複雜功能的乙個類的例項化通過比較形象的形式一層一層的例項化出來,比如乙個食物的例項化需要通過廚師以及服務員來例項化,廚師來例項化食物的各種詳細的資訊,服務員指定廚師來達到選擇不同食物的效果,最後客戶買了食物。

原型模式

就是需要建立乙個一樣的新的例項的時候不建立新的,而是複製以前的,複製比建立更加的高效。、

單例模式

很多時候往往只需要類的乙個例項在程式中執行,這個時候就需要單例模式,這個模式把建構函式私有化,僅提供該類的乙個getinstance方法來獲取例項,這個方法檢測是否存在唯一例項,如果存在返回這個例項,不存在就建立乙個新的例項返回。在多執行緒中如果沒有加上乙個互斥鎖可能導致多個例項的出現。

介面卡模式

現有的類之間的資料無法互動。需要乙個新的類作為中間的媒介,來進行轉換,就像電源介面卡一樣,只需要簡單的轉換資料達到能適配的目的即可。

橋接模式

對於多維度的變化傳統的繼承方式會造成大量的繼承和複雜的構造,耦合度非常高。橋接模式則是通過抽象,在抽象裡面復合另乙個緯度的抽象類,以此來一層一層的巢狀來實現多維度的互動。

組合模式

就是樹形化的繼承結構

裝飾模式

傳統的方法給乙個類新增功能是通過繼承來做到的,但是裝飾類可以提供比繼承更高的靈活性,總的來說就是提供乙個decorated類來給各種具體新增功能的裝飾類來繼承。不過複雜性更高。

外觀模式

其實就是把各種子系統的分散的功能聚合起來在乙個類中形成一件特定有意義的事情,也就是組合封裝起來,這些封裝起來的方法能夠方便的給另外的資源所使用而不需要去呼叫多個分散的方法。

享元模式

減少大量物件造成的記憶體的占用

**模式

對於複雜的或者無法複製的物件使用乙個**物件對其進行訪問,可以結合享元模式以減少記憶體開銷。**模式的典型是引用計數,當計數為0時釋放資源。

責任鏈模式

一層套一層的模式,有點像鍊錶,對於每層有自己的職責,並且一定會傳遞到最底層。

命令模式

將行為抽象為物件,比如以前只需要寫乙個介面裡面擁有乙個通用的方法,而現在則是把所有方法集合在了一起,也就是這個類本身代表了他的行為

翻譯模式

類似於語法分析器,將特定的問題當成一句語句來翻譯來解決問題。

迭代器模式

用於返回乙個容器的個個元素,類似於遍歷。

中介者模式

通過使用乙個中間的類來降低兩個需要相互之間影響類之間的耦合度。

備忘錄模式

不破壞封裝的前提下能夠幾下類的狀態並可恢復

觀察者模式

當被觀察者發生改變時可以提醒觀察者,類似於事件響應

策略模式

在不同的狀態下面乙個類執行有不同的方法,具體來說就是乙個不同的類代表乙個策略,當這個類作為引數時就代表使用該策略。

由客戶端決定,往往一次只能選擇一種策略。

狀態模式

與策略模式非常相近,但是狀態的改變是內部進行的,使用者看不到。

模版方法模式

定義好已經固定的東西,抽象出來一下子類要去實現的東西

參觀者模式

對於類的每個元素,visitor介面都有乙個相應的處理函式,實現好了這些函式之後就可以在後面的操作中完成對於類中每個元素不同的訪問效果。

設計模式學習記錄

策略顧名思義 指計策 謀略。一般是指 1.可以實現目標的方案集合 2.根據形勢發展而制定的行動方針和鬥爭方法 3.有鬥爭藝術,能注意方式方法。做一件事我已經有多中方案,選擇執行。個人覺得策略和簡單工廠特別像。但是區別在於。我簡單工廠不需要知道我所有產品方案使人們。需要什麼就造什麼。但是策略要明白。還...

設計模式學習記錄

物件導向程式設計 三大特徵 封裝,繼承,多型 目的 易維護,易擴充套件,易復用,靈活性強 設計模式 六大原則 單一職責原則 就乙個類而言,應該僅有乙個引起它變化的原因.開發 封閉原則 是說軟體實體 類,模組,函式等等 應該可以擴充套件,但不可以修改.特徵 對於擴充套件開發 open for exte...

設計模式學習記錄

設計模式學習 倉庫如下 設計模式學習筆記 物件導向基本設計原則 高層模組不應該依賴於底層模組,兩者都應該依賴於抽象 如 介面展示不應該依賴於內部實現類,應該依賴於整體抽象的抽象類 抽象不應該依賴於實現細節,實現細節應該依賴於抽象 抽象依賴於實現細節就會穩定容易出問題,拿出穩定部分抽象出來,總之要實現...