如果說在開發過程中有什麼需要反覆學習的,設計模式無疑排在第一位!
這段時間開始複習設計模式,所以,做了乙個彙總,希望能夠時不時進行查閱複習一下
僅針對了解設計模式的目標使用者,如果還不了解,建議花些時間系統的學習一下
觀察者模式
描述:有時被稱作發布/訂閱模式,觀察者模式定義了一種一對多的依賴關係,讓多個觀察者物件同時監聽某乙個主題物件。這個主題物件在狀態發生變化時,會通知所有觀察者物件,使它們能夠自動更新自己。
用法:
抽象主題(subject):抽象類或介面,定義統一介面
具體主題(concretesubject):具體類,用來處理訂閱,取消訂閱,以及通知觀察者的功能
抽象觀察者(observer):抽象類或介面,定義統一通知介面
具體觀察者(concreteobserver):具體類,處理具體通知後邏輯等
圖示:
介面卡模式
描述:將乙個類的介面轉換成客戶希望的另外乙個介面。adapter模式使得原本由於介面不相容而不能一起工作的那些類可以在一起工作。
用法:
目標介面(target):抽象類或介面,客戶端需要接的
需要適配的類(adaptee):需要適配的類或適配者類。
介面卡(adapter):通過包裝乙個需要適配的物件,把adaptee轉換成target。
圖示:
簡單工廠模式
描述:將乙個類的介面轉換成客戶希望的另外乙個介面。adapter模式使得原本由於介面不相容而不能一起工作的那些類可以在一起工作。
用法:
工廠類(****** factory): 只包含了建立具體產品的靜態方法。
抽象產品(product):定義簡單工廠中要返回的產品。
具體產品(concreteproduct):具體產品。
圖示:
工廠方法模式
描述:定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。相比於簡單工廠模式,每個子類都專門負責生產乙個產品
用法:
抽象工廠(creator):這個抽象類(或介面)宣告乙個建立物件的工廠方法,用來返回乙個product型別的物件。
具體工廠(concretecreator):重定義工廠方法,返回乙個具體的concrete product例項。
抽象產品(product):定義工廠方法所建立的物件。
具體產品(concreteproduct): 具體產品,繼承自product抽象類。
圖示:
單例模式
描述:保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。
用法:
1,懶漢式:它在需要物件的時候,才判斷是否已有物件,如果沒有就立即建立乙個物件,然後返回,如果已有物件就不再建立,立即返回。
2,餓漢式:該單例類非常餓,迫切需要吃東西,所以它在類載入的時候就立即建立物件。
其中懶漢式有執行緒安全的問題,需要注意!
**模式
描述:如果直接訪問物件比較困難,或直接訪問會給使用者或系統帶來一系列問題。這樣對於客戶端(呼叫者)來說,就不需要直接與真實物件進行互動,解除了呼叫者與真實物件的耦合。
用法:
抽象實體(subject):定義了真實實體(realsubject)和**(proxy)的公共介面,這樣就在任何時候使用真實實體(realsubject)的地方使用**(proxy)。
**(proxy):儲存乙個引用使得**可以直接訪問真實實體,並提供乙個與subject的介面相同的介面,這樣**就可以代替真實實體。
真實實體(realsubject):定義proxy所代表的真實實體。
圖示:
裝飾模式
描述:動態地給乙個物件新增一些額外的職責,就增加功能來說,裝飾模式比生成子類更靈活。
用法:
抽象構建(component):定義乙個抽象介面,用以給這些物件動態地新增職責。
具體構建(concretecomponent):定義乙個具體的物件,也可以給這個物件新增一些職責。
裝飾類(decorator): 裝飾抽象類,繼承了component,從外類來擴充套件component類的功能。
具體裝飾者(concretordecorator):負責給構建物件新增職責。
圖示:
建造者模式
描述:將乙個複雜物件的構造與它的表示分離,使同樣的構建過程可以建立不同的表示,這樣的設計模式被稱為建造者模式。
用法:
建造者(builder):為建立乙個產品物件的各個部件指定抽象介面。
具體建造者(concretebuilder):實現builder的介面以構造和裝配該產品的各個部件,定義並明確它所建立的表示,並 提供乙個檢索產品的介面。
指揮者(director):指揮並構造乙個使用builder介面的物件。
產品(product):表示被構造的複雜物件。concretebuilder建立該產品的內部表示並定義它的裝配過程,包含定義組成部件的類,包括將這些部件裝配成最終產品的介面。
圖示:
未完待續
本文所有類圖引用博主:在此表示感謝!
設計模式彙總
1.寫在前面的話 為什麼要使用設計模式?為什麼工廠模式有三種?下面的話也許能給你一點答案 想想怎樣提高 的可擴充套件性,的重用,的低耦合?也學設計模式能給你答案。2.簡單工廠模式 工廠模式 抽象工廠模式 1 簡單工廠模式 通過傳進來的引數,然後判斷需要new 那乙個物件返回給使用者。2 工廠模式 每...
設計模式彙總
單一職責原則 single responsibility principle,srp 不能將太多的職責放在乙個類中 開閉原則 open close principle,ocp 軟體實體對擴充套件是開放的,對修改是關閉的 黎克特制替換原則 liskov substitution principle,l...
23設計模式彙總
設計模式分為三大類 建立型模式,共五種 工廠方法模式 抽象工廠模式 單例模式 建造者模式 原型模式。結構型模式,共七種 介面卡模式 裝飾器模式 模式 外觀模式 橋接模式 組合模式 享元模式。行為型模式,共十一種 策略模式 模板方法模式 觀察者模式 迭代子模式 責任鏈模式 命令模式 備忘錄模式 狀態模...