簡單工廠模式:
核心:乙個介面,乙個繼承介面的集具體類,乙個工廠類
本質:工廠類的生產產品例項根據建立例項時傳入引數的不同,動態的選擇應該建立哪乙個具體類的例項。
inte***ce
ifruit
//產品類
class
implements
ifruit
}//工廠類
class
fruitfactory
public
static ifruit getinstance
(string classname)
throws classnotfoundexception, illegalacces***ception, instantiationexception
return null;}}
public
class
factorydemo
}
缺陷:如果增加乙個新產品(就是增加實現介面的繼承類類),那就需要在工廠類的生產產品例項中修改**,這樣違反了開閉原則
這時可以引入反射:
class
fruitfactory
public
static ifruit getinstance
(string classname)
throws classnotfoundexception, illegalacces***ception, instantiationexception
}public
class
factorydemo
}
當增加同乙個新的產品類時,不需要再修改**增加if-else分支,而是在工廠類的生產產品例項的方法中接收乙個產品類的名稱,在方法內部使用反射獲取該產品類的例項,這樣做無論增加多少產品類都不需要去修改工廠類的** 反射實現簡單工廠模式
傳統的簡單工廠模式缺點是 缺點 由於工廠類集中了所有例項的建立邏輯,這就直接導致一旦這個工廠出了問題,所有的客戶端都會受到牽連 這樣一來,但產品的種類增加的時候,即有不同的產品介面或者抽象類的時候,工廠類就需要判斷何時建立何種種類的產品,這就和建立何種種類產品的產品相互混淆在了一起,違背了單一職責,...
簡單工廠模式,工廠模式,抽象工廠模式
三種模式看了一天,記錄下自己的理解 headfirst,比薩店為例 1,簡單工廠模式 乙個具體的工廠類 pizzafactory 乙個抽象的產品類pizza,可以派生出多個具體的產品類 客戶 pizzastore類 工廠類 pizzafactory類關聯產品類pizza,工廠生產出不同型別的pizz...
簡單工廠模式 工廠模式 抽象工廠模式
簡單工廠模式 簡單工廠模式的最大優點在於工廠類中包含了必要的邏輯判斷,根據客戶端的選擇條件動態例項化相關類,對於客戶端來說,去除了與具體產品的依賴。但增加功能時,需增加 case 邏輯判斷分支條件,修改了原有的類,我們不但對擴充套件開發了,對修改也開放了,違背了開放 封閉原則。工廠方法模式,定義了乙...