設計模式之工廠方法模式

2021-12-30 03:29:51 字數 1378 閱讀 7084

工廠方法模式:定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。工廠方法使乙個類的例項化延遲到其子類。

產生:說到工廠模式,我想大家就能想到簡單工廠模式,由於在簡單工廠模式中當需要擴充套件功能時就需要修改原類,這違背了開放-封閉原則,而工廠方法模式則將類的例項化延遲到子類,避免了類的修改,下面是兩種模式結構圖:

1、簡單工廠模式結構圖:

1) 工廠類角色(creator):這是本模式的核心,含有一定的商業邏輯和判斷邏輯。

2) 抽象產品角色(product):它一般是具體產品繼承的父類或者實現的介面。

3) 具體產品角色(concreteproduct):工廠類所建立的物件就是此角色的例項。

2、工廠方法模式結構圖:

1) 抽象工廠角色()creator): 這是工廠方法模式的核心,它與應用程式無關。是具體工廠角色必須實現的介面或者必須繼承的父類。

2) 具體工廠角色(concretecreator):它含有和具體業務邏輯有關的**。由應用程式呼叫以建立對應的具體產品的物件。

3) 抽象產品角色(product):它是具體產品繼承的父類或者是實現的介面。

4) 具體產品角色(concreteproduct):具體工廠角色所建立的物件就是此角色的例項。

例項引用:

用乙個大家比較熟知的故事來介紹工廠方法模式:女媧補天,

分析:首先對造人過程進行分析,該過程涉及三個物件:女媧、八卦爐、三種不同膚色的人,女媧可以使用場景類client來表示,八卦爐類似於乙個工廠,負責製造生產產品(即人類):三種不同膚色的人,他們都是同乙個介面下的不同實現類,都是人嘛,只是膚色、語言不同,對於八卦爐來說都是它生產出的產品。

解釋:類圖比較簡單,abstracthumanfactory是乙個抽象類,定義了乙個八卦爐都具有的整體功能,humanfactory為實現類,完成具體的任務:建立人類;human介面是人類的總稱,其三個實現類分別為三類人種;nvwa類是乙個場景類,負責模擬這個場景,執行相關的任務。

理解:結合例子,我們知道工廠方法實現時,客戶端需要決定例項化哪個工廠來實現運算類,選擇判斷的問題還是存在的,也就是說,工廠方法模式把簡單工廠的內部邏輯判斷移到了客戶端**來進行,你想加功能,本來是改工廠類,而現在是改客戶端。

結合之前對工廠模式的介紹,這個例子就自然而然很清楚啦!

設計模式 工廠模式之工廠方法模式

工廠方法模式是指定義乙個建立物件的介面,然後實現這個介面的工廠來決定建立什麼樣的例項。工廠方法讓類的例項推遲到子類中進行。在這個模式中,只關心需要建立的是什麼工廠,不需要關心建立的細節。而且新加入的產品符合開閉原則。1 建立支付介面,裡面定義抽象的支付方法。package com.gupao.vip...

設計模式之工廠方法模式

package com.csair.design.pattern 工廠方法,有抽象基類,每個子類生產乙個具體物件,與抽象工廠的關係是,抽象工廠生產多個產品 產品有某種內在聯絡 工廠方法只生產乙個物件 author ppt public class factorymethod public stati...

設計模式之工廠方法模式

在介紹工廠方法模式之前,先來介紹一下簡單工廠。什麼是簡單工廠?在類中,難免要例項化一些類,那麼我們把這些類的例項化抽離出來封裝成乙個工廠類,工廠類提供乙個公共的靜態或非靜態的方法來返回其他物件所需要的物件。這樣做的目的就是將物件的例項化與邏輯 分開,提高 的復用能力。這就是簡單工廠。public a...