使用反射的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牛人
如何解决这个问题呢?