設計模式之 工廠模式

2021-06-27 22:08:32 字數 2093 閱讀 5520

1. 概念

工廠方法:一抽象產品類派生出多個具體產品類;一抽象工廠類派生出多個具體工廠類;每個具體工廠類只能建立乙個具體產品類的例項。

即定義乙個建立物件的介面(即抽象工廠類),讓其子類(具體工廠類)決定例項化哪乙個類(具體產品類)。「一對一」的關係。

抽象工廠:多個抽象產品類,派生出多個具體產品類;乙個抽象工廠類,派生出多個具體工廠類;每個具體工廠類可建立多個具體產品類的例項。

即提供乙個建立一系列相關或相互依賴物件的介面,而無需指定他們的具體的類。「一對多」的關係。

2. uml

工廠方法:

抽象工廠:

工廠方法:

public

inte***ce product

public

inte***ce creator

public

class concreteproduct1 implements product

}public

class concreteproduct2 implements product }

public

class concretecreator1 implements creator

}public

class concretecreator2 implements creator}

public

class client

}

抽象工廠:

//

定義不同的產品之間的一定具備的標準,用inte***ce實現

//其中的method()方法可看作提取出不同產品的共性,如手機都有類似的功能

inte***ce iproducta

inte***ce iproductb

//實現了產品標準實現的一系列具體產品

//由於已經設計好a1由廠商1生產,故以下輸出**有「廠商x」

class producta1 implements iproducta

} class producta2 implements iproducta

} class productb1 implements iproductb

} class productb2 implements iproductb

} //

每一種牌子的產品生產工廠,即不同的廠商負責自己牌子產品的生產

abstract

class factory1

abstract

class factory2

//具體的工廠用來生產相關的產品

class concretefactory1 extends factory1

public iproductb getproductb1()

} class concretefactoryb extends factory2

public iproductb getproductb2()

} //

測試類

public

class client

}

4. 應用場景

工廠方法:

在以下情況下,適用於工廠方法模式:

(1) 當乙個類不知道它所必須建立的物件的類的時候。

(2) 當乙個類希望由它的子類來指定它所建立的物件的時候。

(3) 當類將建立物件的職責委託給多個幫助子類中的某乙個,並且你希望將哪乙個幫助子類是**者這一資訊區域性化的時候。

抽象工廠:

(1) 乙個系統不應當依賴於產品類例項如何被建立、組合和表達的細節,這對於所有形態的工廠模式都是重要的。

(2) 這個系統有多於乙個的產品族,而系統只消費其中某一產品族。

(3) 同屬於同乙個產品族的產品是在一起使用的,這一約束必須在系統的設計中體現出來。

(4) 系統提供乙個產品類的庫,所有的產品以同樣的介面出現,從而使客戶端不依賴於實現。

設計模式 設計模式之工廠模式

工廠方法模式 建立模式 使用場景?作用?形態?場景 大量類似的實體類 要建立的實體類都是同一本質的東西 披薩 有部分類似功能 準備 烘烤 切法 實現方式不一樣 準備的材料不同 烘烤時間不同 切法不同 將繁瑣複雜的建立類的過程聚集在一起,有序清晰 把具體例項化的過程從客戶 中抽離 作用 1 將建立物件...

c 設計模式 之 工廠模式之 工廠模式

1 uml類圖 實現和依賴關係 實現 sportfactory jeepfactory hatchbackfactory 實現 ifactory 介面 sportcar jeepcar hatchbackcar 實現 icar 介面 依賴 ifactory 依賴 icar sportfactory ...

設計模式 工廠模式之簡單工廠模式

定義 由乙個工廠物件 工廠類 來指定建立某乙個產品類的例項。使用場景 客戶端只需傳入指定的引數即可,工廠類負責建立的物件較少 因為指定了傳入的引數 介面類 本想用iphone命名的,見諒 public inte ce phone實現介面類 public class huaweiphone imple...