Java 重构包含小差分的双if方法的有效方法
我试图重构以下方法,但没有找到好的解决方案:Java 重构包含小差分的双if方法的有效方法,java,refactoring,Java,Refactoring,我试图重构以下方法,但没有找到好的解决方案: private void check(SpecificData specificdata, Task task){ if(specificdata instanceof MyData){ MyData data = (MyData) specificdata; if(!data.getItemList()isEmpty){ //SAME CODE } }
private void check(SpecificData specificdata, Task task){
if(specificdata instanceof MyData){
MyData data = (MyData) specificdata;
if(!data.getItemList()isEmpty){
//SAME CODE
}
}
if(specificdata instanceof OtherData){
OtherData data = (OtherData) specificdata;
//SAME CODE
}
}
我试图避免写同样的代码,但我不知道这是否可能。你有什么建议吗?我会使用多态方法,生成特定数据的子类或直接使用所需的功能修改它。 例如: /*SpecificData本身,或扩展SpecificData的类*/ 公共类SomeData扩展了SpecificData{ //包含“相同代码”块中所需的功能 } /*扩展某些数据的特殊类*/ 公共类MyData扩展了SomeData{} 公共类OtherData扩展了SomeData{} /*…在别的地方*/ 私有void checkSomeData somedata,任务任务{ MyData的ifsomedata实例//MyData的一个特例 ifMyData somedata.getItemList.isEmpty返回; //在此处运行“相同代码”块 }
大家好,为什么不使用公共代码创建一个新函数并从两个位置调用该函数呢?在多个位置运行相同的代码称为方法,这样做有问题吗?了解//相同的代码实际上是什么会很有帮助。