常用設計模式的比較

2021-09-27 02:44:32 字數 2509 閱讀 7354

分類設計模式

建立型工廠方法模式(factory method)、抽象工廠模式(abstract factory)、

建造者模式(builder)、原型模式(prototype)、單例模式(singleton)

結構型介面卡模式(adapter)、橋接模式(bridge)、組合模式(composite)、

裝飾器模式(decorator)、門面模式(facade)、享元模式(flyweight)、

**模式(proxy)

行為型直譯器模式(interpreter)、模板方法模式(template method)、

責任鏈模式(chain of responsibility)、命令模式(command)、

迭代器模式(iterator)、調解者模式(mediator)、備忘錄模式(memento)、

觀察者模式(observer)、狀態模式(state)、策略模式(strategy)、

訪問者模式(visitor)

單例模式和工廠模式

實際業務**中,通常會把工廠類設計為單例,如spring中的工廠與bean。

策略模式和工廠模式

1、工廠模式包含工廠方法模式和抽象工廠模式是建立型模式,策略模式屬於行為型模式。

2、工廠模式主要目的是封裝好建立邏輯,策略模式接收工廠建立好的物件,從而實現不同的行為。

策略模式和委派模式

1、策略模式是委派模式內部的一種實現形式,策略模式關注的結果是否能相互替代。

2、委派模式更關注分發和排程的過程。

模板方法模式和工廠方法模式

工廠方法是模板方法的一種特殊實現。對於工廠方法模式的create()方法而言,相當於只有乙個步驟的模板方法模式。這乙個步

驟交給子類去實現。而模板方法模式會將多種模板中的方法交給子類實現,執行的順序是在模板中定義好的。

模板方法模式和策略模式

1、模板方法和策略模式都有封裝演算法。

2、策略模式是使不同演算法可以相互替換,且不影響客戶端應用層的使用。

3、模板方法是針對定義乙個演算法的流程,將一些有細微差異的部分交給子類實現。

4、模板方法模式不能改變演算法流程,策略模式可以改變演算法流程且可替換。策略模式通常用來代替if...else...等條件分支語句。

裝飾者模式和靜態**模式

1、裝飾者模式關注點在於給物件動態新增方法,而**更加注重控制對物件的訪問。

2、**模式通常會在**類中建立被**物件的例項,而裝飾者模式通常把被裝飾者作為構造引數。裝飾者和**者雖然都持有對方引用,但邏輯處理重心是不一樣的。

裝飾者模式和介面卡模式

2、裝飾者模式可以實現被裝飾者與相同的介面或者繼承被裝飾者作為它的子類,而介面卡和被適配者可以實現不同的介面。

介面卡模式和靜態**模式

介面卡可以結合靜態**來實現,儲存被適配物件的引用,但不是唯一的實現方式。

介面卡模式和策略模式

在適配業務複雜的情況下,利用策略模式優化動態適配邏輯。

設計模式

一句話歸納

舉例工廠模式(factory)

只對結果負責,封裝建立過程

beanfactory、calender

單例模式(singleton)

保證獨一無二

原型模式(prototype)

拔一根猴毛,吹出千萬個

arraylist、prototypebean

**模式(proxy)

找人辦事,增強職責

proxyfactorybean、

jdkdynamicaopproxy、cglibaopproxy

委派模式(delegate)

幹活算你的(普通員工),

功勞算我的(專案經理)

dispatcherservlet、

beandefinitionparserdelegate

策略模式(strategy)

使用者選擇,結果統一

instantiationstrategy

模板模式(template)

流程標準化,自己實現定製

介面卡模式(adapter)

相容轉換頭

advisoradapter、handleradapter

裝飾器模式(decorator)

包裝,同宗同源

觀察者模式(observer)

任務完成時通知

contextloaderlistener

內容參考自《spring5核心原理與30個類手寫實戰》

設計模式比較

一 模式 1感性認識 即代別人理事物 使用場景有同級別物件間的傳值,比如前後控制器之間,也可以是外層裡層物件間的傳值,比如控制器和其檢視或模型間的傳值 二單例模式 全域性共享資源 三比較1block回掉比 回掉更方便,但是block式是利用物件屬性傳值,似乎只適合物件對另一物件的值傳遞 檢視對控制器...

設計模式 常用的設計模式介紹

簡單點說,就是乙個應用程式中,某個類的例項物件只有乙個,你沒有辦法去new,因為構造器是被private修飾的,一般通過getinstance 的方法來獲取它們的例項。getinstance 的返回值是乙個物件的引用,並不是乙個新的例項 懶漢式 執行緒不安全 public class singlet...

設計模式 建立型模式比較

在gof的 design patterns elements of resuable object oriented software 中列舉了5類建立型的設計模式,包括工廠方法模式 factory method 抽象工廠模式 abstract factory 生成器模式 builder 單件模式 ...