我正在重新实现D中的java程序。我使用了工厂模式, 也就是说,从数据“myclass”“5.3,6,8,10”,我用反射来调用构造函数
myclass(5.3 ,6,8,10);
如何解决D中的相同问题,即给定类名和参数 构造函数采用(只有基元),通过调用参数中的构造函数来创建该类的实例?
一个明显的解决方案如下:制作一个巨大的开关/案例陈述, 以类名作为案例,make构造函数将double []作为参数。 这很难看,因为我需要将每个新类添加到此列表中。
我可以强制每个类静态地将自己添加到某个全局地图中, 不知何故,将类名映射到构造函数。
答案 0 :(得分:0)
您可以拥有一个包含辅助对象的列表。辅助对象(MiniFactory)基本上有一个测试方法和一个工厂方法,所以你可以说:
for (int i=0; i<max_classes; i++) {
MiniFactory f = factoryList[i];
if (f.typeIsMatching(inputString))
return f.createObject(inputArgs);
}
运气好的话,您可以使用模板来定义MiniFactories。