0918 圖解設計模式 簡單工廠/工廠模式/抽象工廠/策略
阿新 • • 發佈:2018-12-10
工廠模式為了建立具有相似行為和屬性的物件
想了一個很貼近生產,容易理解的例子,比如我要實現一個接收器receiver
有相同的行為receive(),但是具體實現不同,分為UDP和TCP兩種
簡單工廠/工廠模式
簡單工廠可以算是工廠模式的特例,比較懶惰,要改原有程式碼的‘比較懶的工廠模式’,兩者區別如下圖所示
抽象工廠
上個例子中只有接受器,構成一個兩個產品的產品樹,但很多時候產品樹不止一個
如相應的有傳送器,或者還有前處理器,後處理器,每個都分為UDP和TCP兩類,那麼 TCP這一線構成了一個產品族
這時就要使用抽象工廠來組合,具體實現可以是每個簡單工廠的組合,或者工廠模式的組合
策略模式
網上有人將策略模式和工廠模式作為對比
工廠模式是工廠負責建立物件,而策略模式則是使用者提供具體物件,執行對應的方法
我覺得並不是太貼切,
策略模式是不同物件提供同一方法介面的不同實現
而工廠方法我覺得可以理解為是創造Bean的策略模式,或者是面向於createInstance建立例項這一通用方法的策略模式
策略模式是同一介面,不同物件去做不同方法;
工廠模式是同一建立物件介面,根據請求不同建立不同的物件,
所以一般先通過工廠模式建立對應物件,而之後執行物件對應的方法就是策略模式,而這樣一組合就是模板模式
設計模式本來就是你中有我,我中有你,沒法單分開,只不過不同側重時,某一種顯現的比較強
這是三爺的一些個人思考,歡迎大家交流補充
轉載請複製連結,謝謝大家