工廠模式是一種建立型的設計模式,所謂建立型設計模式,不是簡單的使用new方法 例項化物件,建立物件時在——由誰?建立什麼?何時?等方面,提高了設計的靈活性。
比如,普通工廠模式:對實現同一介面的類進行例項建立。
需求:定義乙個生產龍蝦的工廠,通過使用這個工廠能烹飪各種龍蝦。
思路:定義乙個工廠類,去建立其他類的例項,使用時 先例項化這個工廠,呼叫工廠裡的方法,達到隱匿的建立其他類的例項,而後呼叫其他類的例項的方法。
結構:工廠,抽象產品,具體產品。
public
class
lobste***ctory
if(lobstertype.
equalsignorecase
("bostonlobster"))
else
if(lobstertype.
equalsignorecase
("panulirushomarus"))
else
if(lobstertype.
equalsignorecase
("australianlobster"))
return null;
}}
public
inte***ce
lobster
//1)波士頓龍蝦
public
class
bostonlobster
implements
lobster
}//2)青龍
public
class
australianlobster
implements
lobster
}//3)澳洲龍蝦
public
class
panulirushomarus
implements
lobster
}
public
class
factorypatterndemo
}
比如抽象工廠模式,定義乙個抽象工廠(工廠的工廠),再定義一些具體的子工廠去擴充套件抽象工廠的功能,使用前定義乙個工廠生產器,使用時通過工廠生產器獲取具體子工廠例項,而後獲取具體要生產的產品例項,呼叫產品方法。其結構:抽象工廠,具體工廠,抽象產品,具體產品。
例子:我想建立乙個海鮮加工廠,不僅能烹飪各種龍蝦,還能烹飪何種好吃的魚,提供各種型別的飲料。
// 1 想吃龍蝦
public
inte***ce
lobster
// 想吃波士頓龍蝦
public
class
bostonlobster
implements
lobster
}// 2 想吃魚?
public
inte***ce
fish
// 想吃多寶魚
public
class
scophthalmusmaximus
implements
fish
}
public
abstract
class
abstractfactory
// 龍蝦加工廠
public
class
lobste***ctory
extends
abstractfactory
if(lobstertype.
equalsignorecase
("bostonlobster"))
return null;
}@override
public fish gettaste
(string fishtype)
}// 魚類加工廠
public
class
fishfactory
extends
abstractfactory
@override
public fish gettaste
(string fishtype)
if(fishtype.
equalsignorecase
("scophthalmusmaximus"))
return null;
}}
public
class
factoryproducer
else
if(choice.
equalsignorecase
("fish"))
return null;
}}
public
class
demo
}
工廠模式理解
例如乙個基類pet有許多個子類,聲稱這個體系中的隨機物件,當這個體系不斷有新子類增加的時候,因為該繼承體系中已經存在了常規的基礎,所以就有可能出現問題 考慮一點,為每個子類增加靜態初始化器,但是問題是 靜態初始化器只能在類首先被載入的時候才能被呼叫,而生成器在其列表中如果沒有這個類,他就永遠不能被呼...
設計模式 工廠模式理解
工廠模式在建立物件時不會對客戶端暴露建立邏輯,並且是通過使用乙個共同的介面來指向新建立的物件。在物件導向設計中工廠模式是程式設計的首先模式。為了深入理解這個概念,首先講一下 工廠 的概念。工廠是可以大量重複生產相同產品的場所。對於工廠來講,生產一件產品和生產一萬件產品在技術和管理層面上不應該有本質差...
簡單工廠模式理解
首先需要乙個介面 pu u 需要多個實現類 pub 我是乙個m publ u 我是乙個 o 建立工廠類實現 pu u man 工廠方法模式 也叫工廠模式,屬於類建立型模式,工廠父類 介面 負責定義產品物件的公共介面,而子類工廠則負責建立具體的產品物件。目的 是為了把產品的例項化操作延遲到子類工廠中完...