Java 之工廠方法和抽象工廠模式

2021-07-13 09:43:36 字數 2193 閱讀 1314

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) 系統提供乙個產品類的庫,所有的產品以同樣的介面出現,從而使客戶端不依賴於實現。

**:

Java 之工廠方法和抽象工廠模式

1.概念 工廠方法 一抽象產品類派生出多個具體產品類 一抽象工廠類派生出多個具體工廠類 每個具體工廠類只能建立乙個具體產品類的例項。即定義乙個建立物件的介面 即抽象工廠類 讓其子類 具體工廠類 決定例項化哪乙個類 具體產品類 一對一 的關係。抽象工廠 多個抽象產品類,派生出多個具體產品類 乙個抽象工...

Java 之工廠方法和抽象工廠模式

1.概念 工廠方法 一抽象產品類派生出多個具體產品類 一抽象工廠類派生出多個具體工廠類 每個具體工廠類只能建立乙個具體產品類的例項。即定義乙個建立物件的介面 即抽象工廠類 讓其子類 具體工廠類 決定例項化哪乙個類 具體產品類 一對一 的關係。抽象工廠 多個抽象產品類,派生出多個具體產品類 乙個抽象工...

Java 之工廠方法和抽象工廠模式

1.概念 工廠方法 一抽象產品類派生出多個具體產品類 一抽象工廠類派生出多個具體工廠類 每個具體工廠類只能建立乙個具體產品類的例項。即定義乙個建立物件的介面 即抽象工廠類 讓其子類 具體工廠類 決定例項化哪乙個類 具體產品類 一對一 的關係。抽象工廠 多個抽象產品類,派生出多個具體產品類 乙個抽象工...