避免if语句创建对象

时间:2012-09-18 11:35:47

标签: java reflection immutability

我有一个遗留应用程序,它使用不可变对象,这些对象在每个构造函数中创建时都会进行一些验证。每个对象都进行自己的验证,f。恩。长度检查,范围检查等。

business Objects看起来像:

public class MyObject {
   private FieldA fieldA;
   private FieldB fieldB;
   ...
}

通过调用加载数据的cobol服务器来创建对象......这段代码看起来很脏:

if (isFieldSet(response.getValueA())) {
   myObject.setFieldA(new FieldA(response.getValueA()));
}

if (isFieldSet(response.getValueB())) {
   myObject.setFieldA(new FieldA(response.getValueB()));
}

...

因为有很多对象,所以还有很多if语句。 我可以使用反射来改进它并动态创建类。

myObject.setFieldA(createField(A.class, response.getValueA()));
myObject.setFieldA(createField(B.class, response.getValueB()));

这使我的代码更好,但也慢得多。有人看到任何优雅的方法来解决这个问题吗?

问候,

麦克

1 个答案:

答案 0 :(得分:0)

如果我弄错了,你想摆脱这么多的If语句。如果您使用一些接受响应并相应返回输出的模板引擎,这不是很好吗?美妙的是,模板中只能有一个If语句,它根据输入响应驱动对象创建逻辑。 试试Velocity Template Engine