使用反射的Factory Pattern與Singleton Pattern的衝突問題
具體情況如下:
有個產品系
class X
{
...
}
class A extends X
{
...
}
class B extends X
{
...
}
同類的產品還有C, D, E...等等
該組類的責任是管理web app中的xml檔案
為避免管理衝突,對其所有方法synchronized,並使用Singleton Pattern
使得每次都只有一個例項在work
現有工廠方法
class XFactory
{
public X getX(String key)
{
...
}
}
本來我根據傳入的引數key生成具體的X系子類
if (key.equals("xxxxx")) then 方法
但是考慮X系的子類很多,於是改用反射,key就是類的全名
X = Class.forName(key).newInstance();
但問題是反射一定要求類的構造器不能private
因此就和X系類的Singleton Pattern衝突了
請教各位DP牛人
如何解決這個問題呢?
有個產品系
class X
{
...
}
class A extends X
{
...
}
class B extends X
{
...
}
同類的產品還有C, D, E...等等
該組類的責任是管理web app中的xml檔案
為避免管理衝突,對其所有方法synchronized,並使用Singleton Pattern
使得每次都只有一個例項在work
現有工廠方法
class XFactory
{
public X getX(String key)
{
...
}
}
本來我根據傳入的引數key生成具體的X系子類
if (key.equals("xxxxx")) then 方法
但是考慮X系的子類很多,於是改用反射,key就是類的全名
X = Class.forName(key).newInstance();
但問題是反射一定要求類的構造器不能private
因此就和X系類的Singleton Pattern衝突了
請教各位DP牛人
如何解決這個問題呢?
相關文章
- 單例模式(Singleton Pattern)單例模式
- 設計模式--單例(Singleton Pattern)設計模式單例
- 簡單工廠模式( Simple Factory Pattern )模式
- 深入理解 JavaScript 單例模式 (Singleton Pattern)JavaScript單例模式
- 常用設計模式-單例模式(Singleton pattern)設計模式單例
- 設計模式之單例模式(Singleton Pattern)設計模式單例
- PHP設計模式(一)—單例模式(Singleton Pattern)PHP設計模式單例
- 設計模式--抽象工廠模式(Abstract Factory Pattern)設計模式抽象
- 設計模式--工廠方法模式(Factory Method Pattern)設計模式
- 設計模式-抽象工廠模式(Abstract Factory Pattern)設計模式抽象
- 使用C# (.NET Core) 實現單體設計模式 (Singleton Pattern)C#設計模式
- mapstruct結合lombok使用的衝突問題StructLombok
- 設計模式實戰 - 抽象工廠模式(Abstract Factory Pattern)設計模式抽象
- 設計模式系列之工廠模式三兄弟(Factory Pattern)設計模式
- 設計模式實戰 – 抽象工廠模式(Abstract Factory Pattern)設計模式抽象
- JAR衝突問題的解決JAR
- PtrClassicFrameLayout與viewpager橫向滑動衝突的問題Viewpager
- 【圖解設計模式系列】The Abstract Factory Pattern: 抽象工廠模式圖解設計模式抽象
- VMware無法啟動/VMware和wsl衝突問題/VMware與Hyper-V衝突問題
- 使用C# (.NET Core) 實現簡單工廠(Simple Factory) 和工廠方法設計模式 (Factory Method Pattern)C#設計模式
- SVG <pattern>SVG
- Adapter PatternAPT
- 設計模式系列之單例模式(Singleton Pattern)——確保物件的唯一性設計模式單例物件
- 【java】Pattern和Matcher的概述Java
- Servlet的url-pattern配置Servlet
- Cache Aside PatternIDE
- STL and Design Pattern
- 一個網路IP地址衝突的問題
- Java中的代理模式(Proxy Pattern)Java模式
- git 解決版本衝突問題Git
- android NestedScrollView和ListView衝突問題AndroidView
- wsl docker 和 ubuntu 衝突問題DockerUbuntu
- jQuery.noConflict() 方法—— jquery庫與其他庫衝突的問題解決jQuery
- Git Worktree:解決分支依賴衝突的問題Git
- oracle 序列值導致的主鍵衝突問題Oracle
- 代理模式(Proxy Pattern)模式
- [review]Design Pattern:CommandView
- 策略模式【Strategy Pattern】模式
- ivew表格中render函式與tooltip:true衝突問題函式