2
我有一个遗留应用程序,它与在每个构造函数中创建时进行一些验证的不可变对象一起工作。每个对象都有他自己的验证,f。恩。长度检查,范围检查等避免if语句创建对象
业务对象的样子:
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()));
这使得我的代码更好,但也慢得多。有人看到任何优雅的方法来解决这个问题吗?
问候,
迈克
究竟是什么问题?工作的丑陋代码仍然是可用的代码。做这个改变的收益是多少? –
看起来像[工厂方法]的候选人(https://en.wikipedia.org/wiki/Factory_method_pattern)。 –
是的,你说得对,代码工作,并将在未来几年正常工作。但是,是的......我认为代码不仅适用。 – boskop