使用反射的Factory Pattern與Singleton Pattern的衝突問題

CrazyJavar發表於2002-10-23
原文網址 : http://jdon.com/2506
具體情況如下:

有個產品系
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牛人

如何解決這個問題呢?

相關文章