工廠模式系列 反射改進

2021-08-30 01:57:02 字數 1587 閱讀 5310

1 簡單工廠模式

乙個工廠

乙個抽象產品類

一組具體產品類

工廠根據引數決定返回那個具體產品

違反開閉原則

2 工廠方法模式

乙個抽象工廠

乙個抽象產品

一組具體工廠 和 與之對應的一組具體產品

每個工廠負責生產它的那種產品。

3 抽象工廠方法模式

乙個抽象工廠

一組抽象產品

一組具體工廠 和 與之對應的一組具體產品

與工廠方法不同的是工廠生產的是乙個系列的產品,而不是一種產品。

4

無論哪種方法,都還是需要有究竟是用哪個產品、或那個工廠的邏輯判斷

例如,在簡單工廠中,需要有一維選擇

case("c1"):

return new c1();

case("c2")

return new c2();

在工廠方法中,需要有一維選擇

factory factory = new factoryaaa();

factory.creat();

在抽象工廠中,需要有二維選擇

factory factory = new factoryaaa();

factory.creatttt();

但是這一點可以通過反射來進一步解耦

例如簡單工廠

return class.forname("productclassname").newinstance();
工廠方法(此時已經不需要若干的工廠子類,只需乙個工廠控制器)

return class.forname("factoryclassname").newinstance().creat();
抽象工廠方法(此時已經不需要若干的工廠子類,只需乙個工廠控制器)

return class.forname("factoryclassname").newinstance().creatttt();
而這些productclassname和factoryclassname,都可以以字串形式、甚至配置檔案形式讀入

5

spring的context實際也就是乙個大工廠(抽象工廠模式?)

而且spring定義bean的時候也可以指定factory物件(此時context是工廠的工廠?)

設計模式之用反射機制改進的抽象工廠

有關三種工廠模式的知識,請看我這篇博文 我們直接來看乙個抽象工廠的demo 1.抽象產品類 資料庫增刪改用到的 user表 department表 public inte ce iuser public inte ce idepartment 2.實體產品類這裡考慮的兩種不同的資料庫,sqlserv...

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

簡單工廠模式 核心 乙個介面,乙個繼承介面的集具體類,乙個工廠類 本質 工廠類的生產產品例項根據建立例項時傳入引數的不同,動態的選擇應該建立哪乙個具體類的例項。inte ce ifruit 產品類 class implements ifruit 工廠類 class fruitfactory publ...

反射實現簡單工廠模式

傳統的簡單工廠模式缺點是 缺點 由於工廠類集中了所有例項的建立邏輯,這就直接導致一旦這個工廠出了問題,所有的客戶端都會受到牽連 這樣一來,但產品的種類增加的時候,即有不同的產品介面或者抽象類的時候,工廠類就需要判斷何時建立何種種類的產品,這就和建立何種種類產品的產品相互混淆在了一起,違背了單一職責,...