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

2021-08-29 20:06:42 字數 1776 閱讀 2276

一 、工廠方法(factory method)模式

工廠方法模式的意義是定義乙個建立產品物件的工廠介面,將實際建立工作推遲到子類當中。核心工廠類不再負責產品的建立,這樣核心類成為乙個

抽象工廠

角色,僅負責具體工廠子類必須實現的介面,這樣進一步

抽象化的好處是使得工廠方法

模式可以使系統在不修改具體工廠角色的情況下引進新的產品。

二、 工廠方法模式角色與結構

抽象工廠

(creator)角色:是工廠方法模式的核心,與應用程式無關。任何在模式中建立的物件的工廠類必須實現這個介面。

具體工廠(concrete creator)角色:這是實現抽象工廠介面的具體工廠類,包含與應用程式密切相關的邏輯,並且受到應用程式呼叫以建立產品物件。在上圖中有兩個這樣的角色:bulbcreator與tubecreator。

抽象產品(product)角色:工廠方法模式所建立的物件的超型別,也就是產品物件的共同父類或共同擁有的介面。在上圖中,這個角色是light。

具體產品(concrete product)角色:這個角色實現了抽象產品角色所定義的介面。某具體產品有專門的具體工廠建立,它們之間往往一一對應。

三、乙個簡單的例項

// 產品 plant介面

public inte***ce plant

//具體產品planta,plantb

public class planta implements plant

public void dosomething()

} public class plantb implements plant

public void dosomething()

} // 產品 fruit介面

public inte***ce fruit

//具體產品fruita,fruitb

public class fruita implements fruit

public void dosomething()

} public class fruitb implements fruit

public void dosomething()

} // 抽象工廠方法

public inte***ce abstractfactory

//具體工廠方法

public class factorya implements abstractfactory

public fruit createfruit()

} public class factoryb implements abstractfactory

public fruit createfruit()

}四、工廠方法模式與簡單工廠模式

工廠方法模式與

簡單工廠模式

再結構上的不同不是很明顯。工廠方法類的核心是乙個抽象工廠類,而

簡單工廠模式

把核心放在乙個具體類上。

工廠方法模式之所以有乙個別名叫多型性工廠模式是因為具體工廠類都有共同的介面,或者有共同的抽象父類。

當系統擴充套件需要新增新的產品物件時,僅僅需要新增乙個具體物件以及乙個具體工廠物件,原有工廠物件不需要進行任何修改,也不需要修改客戶端,很好的符合了"開放-封閉"原則。而簡單工廠模式在新增新產品物件後不得不修改工廠方法,擴充套件性不好。

工廠方法模式退化後可以演變成

簡單工廠模式。

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

l 工廠方法模式概述 工廠方法模式中抽象工廠類負責定義建立物件的介面,具體物件的建立工作由繼承抽象工廠的具體類實現。l 優點 客戶端不需要在負責物件的建立,從而明確了各個類的職責,如果有新的物件增加,只需要增加乙個具體的類和具體的工廠類即可,不影響已有的 後期維護容易,增強了系統的擴充套件性 l 缺...

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

工廠方法模式分為三種 普通工廠模式 多個工廠方法模式 靜態工廠方法模式。1 普通工廠模式 以發郵件和簡訊的例子說明。結構如下圖所示 主要分為四個步驟 建立各例項的共同介面 建立各功能例項 建立工廠 主程式。請看如下示例 public class factorymethodmodel 建立二者的共同介...

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

工廠方法模式分為三種 1 普通工廠模式 2 多個工廠模式 3 靜態工廠模式 1 定義乙個介面類 package com.dairuijie.factory 動物介面 author drjyy public inte ce anaimal 2 定義實現介面的類 package com.dairuiji...