java反射機制 工廠設計模式的進化

2021-08-21 18:55:48 字數 1374 閱讀 8894

一、基本使用和**

簡單工廠模式

使用步驟

1、建立抽象產品類 & 定義具體產品的公共介面;

2、建立具體產品類(繼承抽象產品類) & 定義生產的具體產品;

3、建立工廠類,根據傳入不同引數從而建立不同具體產品類的例項;

4、外界通過呼叫工廠類的方法,傳入不同引數從而建立不同具體產品類的例項

public class demo2 

}//1、建立抽象產品類 & 定義具體產品的公共介面;

abstract class product

//2、建立具體產品類(繼承抽象產品類) & 定義生產的具體產品;

class producta extends product

}class productb extends product

}//3、建立工廠類,根據傳入不同引數從而建立不同具體產品類的例項;

class productc extends product

}class factory

}}

優點:

1、將建立例項的工作與使用例項的工作分開,使用者不必關心類物件如何建立,實現了解耦;

2、把初始化例項時的工作放到工廠裡進行,使**更容易維護。 更符合物件導向的原則 & 面向介面程式設計,而不是面向實現程式設計。

缺點1、工廠類集中了所有例項(產品)的建立邏輯,一旦這個工廠不能正常工作,整個系統都會受到影響;

2、違背「開放 - 關閉原則」,一旦新增新產品就不得不修改工廠類的邏輯,這樣就會造成工廠邏輯過於複雜。

二、工廠模式優化

解決的問題:

1、操作成本高:每增加乙個介面的子類,必須修改工廠類的邏輯

2、系統複雜性提高:每增加乙個介面的子類,都必須向工廠類新增邏輯

方案:採用反射機制: 通過 傳入子類名稱 & 動態建立子類例項,從而使得在增加產品介面子類的情況下,也不需要修改工廠類的邏輯

**實現:

public class demo2 

}//1、建立抽象產品類 & 定義具體產品的公共介面;

abstract class product

//2、建立具體產品類(繼承抽象產品類) & 定義生產的具體產品;

class producta extends product

}class productb extends product

}//3、建立工廠類,根據傳入不同引數從而建立不同具體產品類的例項;

class productc extends product

}class factory catch (exception e)

return product;

}}

Java反射與工廠設計模式

如 傳統工廠類 inte ce ifruit public void eat class orange implements ifruit class factory public static ifruit getinstance string name if orange equals name...

關於工廠設計模式的問題(反射機制)

首先來寫乙個傳統的工廠 inte ce ifruit class implements ifruit class orange implements ifruit class factory suppresswarnings unchecked public static ifruit getins...

php 工廠模式 反射機制

class classarr param type 類庫 param classs 工廠庫 param array param 引數 param bool needinstance return object throws reflectionexception 如果工廠模式方法是靜態的那麼就直接返...