工廠模式,適用於建立複雜的物件的地方,若可直接用new完成物件建立則可無需使用工廠模式
工廠模式的主要組成:
抽象產品類:
package ban.com;
public
abstract
class product
具體產品類a:
package ban.com;
public
class
concreteproductcup
extends
product
}
具體產品類b:
package ban.com;
public
class
concreteproductspoon
extends
product
}
抽象工廠類:
package ban.com;
public
abstract
class factory
具體工廠類:
package ban.com;
public
class
concretefactory
extends
factory
}
客戶類:
package ban.com;
public
class client
}
執行列印的資料為spoon,很標準的工廠模式,要是像建立cup物件,可以直接在建立乙個工廠實現類生成cup物件。
package ban.com;
public
class
concretefactory
extends
factory
}
工廠模式主要分為四個模組:
1、抽象工廠:工廠模式的核心
2、抽象產品:用於工廠方法建立的父類
3、具體工廠類的實現:具體的建立邏輯
4、具體產品類的實現:產品的特有邏輯
這樣看上去,需要那個就建立那個工廠的實現類,但是**比較多,也不簡潔,這樣我們可以根據反射的方式簡潔的來生產具體產品物件,這裡會用到泛型的部分(以後會更新泛型部分的知識)
更改抽象工廠:
package ban.com;
public
abstract
class factory
t為繼承product的泛型,返回值必須是product的子類,傳入的clz即為類物件
具體工廠實現:
package ban.com;
public
class
concretefactory
extends
factory catch (instantiationexception | illegalacces***ception
| classnotfoundexception e)
return (t) product;//需是product的子類
}}
這樣就可以保證直接傳入所需類的名稱就可以獲取相應的物件,更改client:
package ban.com;
public
class client
}
列印結果就是:cup spoon
這樣的好處是可以比較簡潔、動態的生成所需要的物件,之前的一種方式成為多工廠方式,都可以使用
工廠模式(更新中)
package ray 餓漢式單例 優點 執行緒安全,缺點 載入類的時候如果建立物件很費時,類的載入會很慢很慢 1 封裝構造器,封死new操作 2 宣告私有的靜態屬性,指向本類物件的乙個引用,並同時建立唯一物件,並讓靜態引用指向這個唯一物件 3 宣告公共的靜態方法,用以獲取唯一物件 懶漢式單例 優點...
簡單工廠模式,工廠模式,抽象工廠模式
三種模式看了一天,記錄下自己的理解 headfirst,比薩店為例 1,簡單工廠模式 乙個具體的工廠類 pizzafactory 乙個抽象的產品類pizza,可以派生出多個具體的產品類 客戶 pizzastore類 工廠類 pizzafactory類關聯產品類pizza,工廠生產出不同型別的pizz...
簡單工廠模式 工廠模式 抽象工廠模式
簡單工廠模式 簡單工廠模式的最大優點在於工廠類中包含了必要的邏輯判斷,根據客戶端的選擇條件動態例項化相關類,對於客戶端來說,去除了與具體產品的依賴。但增加功能時,需增加 case 邏輯判斷分支條件,修改了原有的類,我們不但對擴充套件開發了,對修改也開放了,違背了開放 封閉原則。工廠方法模式,定義了乙...