工廠模式 簡單工廠模式(傳統,加反射)

2021-09-25 19:33:29 字數 1001 閱讀 1325

簡單工廠模式:

核心:乙個介面,乙個繼承介面的集具體類,乙個工廠類

本質:工廠類的生產產品例項根據建立例項時傳入引數的不同,動態的選擇應該建立哪乙個具體類的例項。

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 邏輯判斷分支條件,修改了原有的類,我們不但對擴充套件開發了,對修改也開放了,違背了開放 封閉原則。工廠方法模式,定義了乙...