簡單工廠模式:
優點:簡單易於實現,把類的例項化操作交給工廠類;
缺點:新增具體產品時需要修改工廠,違背了ocp原則
將客戶端的new操作解耦到工廠類中
使用場景:產品個數少
設計簡單工廠模式:
1.建立乙個抽象產品類或者產品類的介面;2.建立多個具體的產品類實現產品類的介面或者繼承抽象產品類並覆寫其中的方法3.建立乙個工廠類,工廠類的構造方法要私有化(防止在類的外部建立工廠類的物件),通過工廠類中的getinstance方法傳入乙個字串來判斷使用哪個具體產品類並例項化
//乙個產品類的介面
inte***ce
icomputer
//mac/hp/software是多個具體產品類,每個具體產品類實現產品類的介面,覆寫方法
class
macimplements
icomputer
}class
hpimplements
icomputer
}class
software
implements
icomputer
}//乙個工廠類
class
factory
public
static icomputer getinstance
(string str)
elseif(
"hp"
.equals
(str)
)elseif(
"software"
.equals
(str)
)return computer;}}
public
class
test1
}
工廠方法模式:
定義乙個用來建立物件的介面;讓子類決定例項化哪個類
每個產品(產品族)提供乙個工廠類,客戶端需要判斷使用哪個工廠
是類的建立模式,用意是用於建立產品物件的工廠的介面,而將實際建立工作推遲到工廠介面的子類中。屬於簡單工廠模式的抽象和推廣。
設計工廠方法模式:
1.建立乙個抽象產品類或介面;1.建立多個具體產品類實現產品類的介面或者是繼承抽象產品類,覆寫產品類的方法;3.建立乙個抽象工廠類或介面;4.建立多個具體工廠類,乙個具體工廠類對應乙個具體產品類;這樣就可以在執行時根據需求建立對應的產品類。物件的例項化操作就交給了工廠類的子類。
優點:彌補了簡單工廠不滿足ocp原則的缺點。
//乙個抽象產品類
inte***ce
icomputer
//多個具體產品類
class
macimplements
icomputer
}class
hpimplements
icomputer
}class
software
implements
icomputer
}//乙個抽象工廠類
inte***ce
factory
//多個具體工廠類
class
macfactory
implements
factory
}class
hpfactory
implements
factory
}class
swfactory
implements
factory
}public
class
test1
}
抽象工廠模式
適用於多個產品線混合的情況下;強調混合,是所有形態的工廠模式中最為抽象和最具一般性的一種形態。
可以將一組具有同一主題的單獨的工廠封裝起來;抽象工廠是乙個父類工廠,可以建立其他工廠類。優點:封裝性很強,產品族內部約束為非公開狀態;缺點是產品族擴充套件十分困難。
應用場景:乙個物件族(或是一組沒有任何關係的物件)都有相同約束,則可以使用。
Java設計模式 工廠設計模式
工廠模式 主要用來例項化有共同介面的類,工廠模式可以動態決定應該例項化那乙個類。工廠模式的形態 工廠模式主要用一下幾種形態 1 簡單工廠 factory 2 工廠方法 factory method 3 抽象工廠 abstract factory 簡單工廠 factory 又叫靜態工廠 是工廠模式三中...
Java設計模式 工廠設計模式
工廠設計模式分為以下三種 簡單工廠模式 工廠方法模式 抽象工廠模式 現在我想買一台電腦,有兩款可以選擇,一款是dell,另一款是hp.現在對於這個問題用一般的思路來解決就是 inte ce computer class dellcomputer implements computer class h...
java設計模式 工廠設計模式
工廠模式分為簡單工廠 工廠方法 抽象工廠模式 工廠模式是我們最常用的例項化物件模式了,是用工廠方法代替new操作的一種模式。利用工廠模式可以降低程式的耦合性,為後期的維護修改提供了很大的便利。將選擇實現類 建立物件統一管理和控制。從而將呼叫者跟我們的實現類解耦。簡單工廠模式相當於是乙個工廠中有各種產...