1. 概念
工廠方法:一抽象產品類派生出多個具體產品類;一抽象工廠類派生出多個具體工廠類;每個具體工廠類只能建立乙個具體產品類的例項。
即定義乙個建立物件的介面(即抽象工廠類),讓其子類(具體工廠類)決定例項化哪乙個類(具體產品類)。「一對一」的關係。
抽象工廠:多個抽象產品類,派生出多個具體產品類;乙個抽象工廠類,派生出多個具體工廠類;每個具體工廠類可建立多個具體產品類的例項。
即提供乙個建立一系列相關或相互依賴物件的介面,而無需指定他們的具體的類。「一對多」的關係。
2. **
工廠方法:
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
}
//3. 應用場景定義不同的產品之間的一定具備的標準,用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
}
工廠方法:
在以下情況下,適用於工廠方法模式:
(1) 當乙個類不知道它所必須建立的物件的類的時候。
(2) 當乙個類希望由它的子類來指定它所建立的物件的時候。
(3) 當類將建立物件的職責委託給多個幫助子類中的某乙個,並且你希望將哪乙個幫助子類是**者這一資訊區域性化的時候。
抽象工廠:
(1) 乙個系統不應當依賴於產品類例項如何被建立、組合和表達的細節,這對於所有形態的工廠模式都是重要的。
(2) 這個系統有多於乙個的產品族,而系統只消費其中某一產品族。
(3) 同屬於同乙個產品族的產品是在一起使用的,這一約束必須在系統的設計中體現出來。
(4) 系統提供乙個產品類的庫,所有的產品以同樣的介面出現,從而使客戶端不依賴於實現。
4.區別
工廠方法模式針對的是乙個產品等級結構,抽象工廠模式則需要面對對個產品等級結構。
工廠方法和抽象工廠
csdn沒有在移動上布網,最近移動校園網登不上csdn,今天終於能登上了,小草鳥就寫下最近在學的設計模式。工廠估計也差不多是用的最多的了,對於工廠方法和抽象工廠比較容易混,筆者在這裡說下自己的學習的一些理解。工廠模式 產品對於工廠,當然是生產產品的了,當然我們得有產品類,為了擴充套件性良好,先定義乙...
抽象工廠和工廠方法
工廠方法模式 乙個抽象產品類,可以派生出多個具體產品類。乙個抽象工廠類,可以派生出多個具體工廠類。每個具體工廠類只能建立乙個具體產品類的例項。抽象工廠模式 多個抽象產品類,每個抽象產品類可以派生出多個具體產品類。乙個抽象工廠類,可以派生出多個具體工廠類。每個具體工廠類可以建立多個具體產品類的例項。區...
Java 之工廠方法和抽象工廠模式
1.概念 工廠方法 一抽象產品類派生出多個具體產品類 一抽象工廠類派生出多個具體工廠類 每個具體工廠類只能建立乙個具體產品類的例項。即定義乙個建立物件的介面 即抽象工廠類 讓其子類 具體工廠類 決定例項化哪乙個類 具體產品類 一對一 的關係。抽象工廠 多個抽象產品類,派生出多個具體產品類 乙個抽象工...