1. 程式人生 > >0918 圖解設計模式 簡單工廠/工廠模式/抽象工廠/策略

0918 圖解設計模式 簡單工廠/工廠模式/抽象工廠/策略

工廠模式為了建立具有相似行為和屬性的物件

想了一個很貼近生產,容易理解的例子,比如我要實現一個接收器receiver

有相同的行為receive(),但是具體實現不同,分為UDP和TCP兩種

簡單工廠/工廠模式

簡單工廠可以算是工廠模式的特例,比較懶惰,要改原有程式碼的‘比較懶的工廠模式’,兩者區別如下圖所示

抽象工廠

上個例子中只有接受器,構成一個兩個產品的產品樹,但很多時候產品樹不止一個

如相應的有傳送器,或者還有前處理器,後處理器,每個都分為UDP和TCP兩類,那麼 TCP這一線構成了一個產品族

這時就要使用抽象工廠來組合,具體實現可以是每個簡單工廠的組合,或者工廠模式的組合

策略模式

網上有人將策略模式和工廠模式作為對比

工廠模式是工廠負責建立物件,而策略模式則是使用者提供具體物件,執行對應的方法

我覺得並不是太貼切,

策略模式是不同物件提供同一方法介面的不同實現

而工廠方法我覺得可以理解為是創造Bean的策略模式,或者是面向於createInstance建立例項這一通用方法的策略模式

策略模式是同一介面,不同物件去做不同方法

工廠模式是同一建立物件介面,根據請求不同建立不同的物件

所以一般先通過工廠模式建立對應物件,而之後執行物件對應的方法就是策略模式,而這樣一組合就是模板模式

設計模式本來就是你中有我,我中有你,沒法單分開,只不過不同側重時,某一種顯現的比較強

這是三爺的一些個人思考,歡迎大家交流補充

轉載請複製連結,謝謝大家