Java中的解决方案用D表示(反射)

时间:2011-06-22 09:08:04

标签: design-patterns reflection d

我正在重新实现D中的java程序。我使用了工厂模式, 也就是说,从数据“myclass”“5.3,6,8,10”,我用反射来调用构造函数

myclass(5.3 ,6,8,10);

如何解决D中的相同问题,即给定类名和参数 构造函数采用(只有基元),通过调用参数中的构造函数来创建该类的实例?

一个明显的解决方案如下:制作一个巨大的开关/案例陈述, 以类名作为案例,make构造函数将double []作为参数。 这很难看,因为我需要将每个新类添加到此列表中。

我可以强制每个类静态地将自己添加到某个全局地图中, 不知何故,将类名映射到构造函数。

1 个答案:

答案 0 :(得分:0)

您可以拥有一个包含辅助对象的列表。辅助对象(MiniFactory)基本上有一个测试方法和一个工厂方法,所以你可以说:

for (int i=0; i<max_classes; i++) {
    MiniFactory f = factoryList[i];
    if (f.typeIsMatching(inputString))
        return f.createObject(inputArgs);
}

运气好的话,您可以使用模板来定义MiniFactories。