【发布时间】:2022-01-04 17:25:30
【问题描述】:
我有以下代码:
MyVersion6 myClass = returnMyClass();
// about 50 lines of code that do the following:
// do some logic with fields of myClass
// create and return another class using some fields of myClass
现在我必须支持版本 7,我可以在 returnMyClass() 方法中返回它。
实现剩余 50 行的最优雅的方法是什么? 在这种情况下,MyVersion6 和 MyVersion7 支持完全相同的方法,但我不想这样做
if ( myClass instanceOf MyVersion6 )
do the 50 lines using (MyVersion6) myClass
else if ( ( myClass instanceOf MyVersion7 )
do the exact same 50 lines using (MyVersion7) myClass
有什么想法吗?
【问题讨论】:
-
也许看看这里:stackoverflow.com/questions/5579309/…。您可以将这 50 行代码转换为接口中的方法,并从
myClass调用该方法,而不管类如何。 -
从长远来看,这里的一点肘部油脂可能更易于维护。也就是说,只要把每个工厂里重复的线都做一遍,完全分开。
-
听起来你会受益于让 MyVersion7 扩展 MyVersion6,在必要时覆盖方法。那么你只需要执行这 50 行代码一次。
标签: java types casting type-conversion return