我有一个遗留应用程序,它使用不可变对象,这些对象在每个构造函数中创建时都会进行一些验证。每个对象都进行自己的验证,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()));
这使我的代码更好,但也慢得多。有人看到任何优雅的方法来解决这个问题吗?
问候,
麦克
答案 0 :(得分:0)
如果我弄错了,你想摆脱这么多的If语句。如果您使用一些接受响应并相应返回输出的模板引擎,这不是很好吗?美妙的是,模板中只能有一个If语句,它根据输入响应驱动对象创建逻辑。 试试Velocity Template Engine。