我有以下的抽象类爪哇 - 动态实例化抽象类
public abstract class Document {
private File file;
public Document(File f) {
this.file = f;
}
...
public abstract String parse();
}
目前,我有一个扩展Document
,JsonDocument
和XmlDocument
两班。
在另一个类DocumentContent中,我有函数遍历json和xml文件的一些集合,并调用parse()函数来提取某些内容。
如何根据检测到的文件扩展名动态实例化Document对象,而无需使用条件语句?将来会添加其他文件扩展名,我希望避免每次创建新的Document类类型时都需要更新DocumentContent。
工厂模式。 –
只是一个想法,但你可以得到的文件扩展名(json或xml),大写的第一个字母和concatentate与“文档”创建类名称,然后newInstance()该类 - 这将涵盖你的JsonDocument和XmlDocument 。但是这种方法迫使你命名类<文件扩展名>文档。 – mikemil