工廠方法模式

2021-06-20 19:35:38 字數 1568 閱讀 5059

定義:定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類,factory method使用乙個類的例項化延遲到其子類。

product:定義工廠方法所建立的物件的介面,也就是實際需要使用的物件的介面。

concreteproduct:具體的product介面的實現物件。

creator:建立器,宣告工廠方法,工廠方法通常會返回乙個product型別的例項物件,而且多是抽象方法。也可以在creator裡面提供工廠方法的預設實現,讓工廠方法返回乙個缺少的product型別的例項物件。

concretecreator:具體的建立器物件,覆蓋實現creator定義的工廠方法,返回具體的product例項

/**

* 要實現的物件

*/public inte***ce product

/**

* 具體的product物件

*/public class concreteproduct implements product

}

/**

* 建立器,宣告工廠方法

*/public abstract class creator

/** * 具體的建立器實現物件 */ public class concretecreator extends creator  } 

工廠方法模式的主要功能是讓父類在不知道具體實現的情況下,完成自身的功能呼叫:而具體的實現延遲到子類來實現。

工廠方法中的creator通常會實現成乙個抽象類,當然也可以實現為乙個具體的類,這種情況下,可以在creator中提供乙個預設的工廠實現方法。

工廠方法模式類似於ioc/di。

ioc----inversion of control,控制反轉。

di----dependency injection,依賴注入。

(1) 參與者:一般有三方參與者,乙個是某個物件,另乙個是ioc/di的容器,還有乙個是某個物件的外部資源。

(2) 誰依賴於誰:當然是某個物件依賴於ioc/di的容器。

(3) 為什麼需要依賴:物件需要ioc/di容器來提供物件需要的外部資源。

(4) 誰注入於誰:ioc/di的容器注入某個物件。

(5) 到底注入什麼:就是注入某個物件所需要的外部資源。

(6) 誰控制誰:ioc/di的容器來控制物件。

(7) 控制什麼:主要是控制物件實現的建立。

(8) 為何叫反**所謂正轉----如果在a中使用c,我們會直接在a中建立c的物件,也就是說,在a類中主動去獲取所需要的外部資源c,這種情況被稱為正向的。而反轉----如果在a中使用c,a類不再主動去獲取c,而是被動等待,等待ioc/di的容器獲取乙個c的例項,再反向地注入到a中。

(9) 依賴注入和控制反轉是同一概念嗎:依賴注入和控制反轉是對同一事情的不同描述----應用程式依賴容器建立並注入它所需要的外部資源,稱為依賴注入----容器控制應用程式,

由容器反向地向應用程式注入其所需要的外部資源,稱為控制反轉。

《研磨設計模式》

工廠方法模式 工廠方法模式

工廠方法模式是簡單工廠模式的公升級版,簡單工廠模式不符合設計模式的原則 即 單一職責,開閉原則 優點 職責明確,擴充套件方便 缺點 需要建立多個工廠 實現步驟 1.將工廠通用方法抽取介面 例如 ifactory 2.將產品抽取介面 例如 icar 3.實現各種產品 例如 baomacar,benti...

工廠方法模式 工廠方法模式 二

工廠方法模式是對簡單工廠的進一步抽象和封裝,需要新的類物件時不需要對既有工廠類進行修改,而是增加新的工廠類。工程類可以使用模版進一步封裝,由編譯器來生成 從而減少 編寫工作量。工廠方法的 c 實現01part產品抽象基類class animal virtual void show 0 02part產...

工廠方法模式(一) 簡單工廠方法模式

ps 第二篇學習部落格,堅持就是勝利。繼續設計模式的學習,記錄工廠模式,加深自己的理解。基本結構 abstractproduct 用來定義基本的商品的抽象 public abstract class abstractphoneproduct 用來實現抽象商品,生成各種商品 public class ...