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