【发布时间】:2015-12-30 14:49:21
【问题描述】:
我目前正在编写一个库,用户可以在其中创建父抽象类Module 的自己的子类。
所以这个库已经包含了我写的一些模块,例如ModuleOne, ModuleTwo, ...
每个Module - 子类都应该可以通过唯一标识符轻松识别,例如整数,因为我想将多个模块配置和连接保存在一个 xml 文件中。
所以我可以稍后加载保存的配置并实例化所需类型的对象。
如果我只使用预定义的类,这很容易,因为我知道ModuleOne 或ModuleTwo 的标识符,所以我可以在函数中创建模块:
public static Module getModuleByType(int type)
{
if (type == ModuleOne.TYPE)
return new ModuleOne();
else if (type == ModuleTwo.TYPE)
return new ModuleTwo();
//and so on...
}
但是如果用户创建了Module 的子类,例如CustomModule,我该如何为这个类分配唯一的标识符,使这个类的所有实例都具有相同的类型标识符?
如何根据它们的标识符动态重新创建这些模块?所以我无法在getModuleByType() 中创建模块,因为我不知道它们的构造函数和标识符。
感谢您的帮助。
【问题讨论】:
-
如果你不知道它们的构造函数,你永远无法实例化它们,因为你不知道它们的构造函数的参数是什么意思。
-
听起来你正在重新创建 Spring IOC。
标签: java