java通用方法,用于评估执行相同功能的不同条件
我有12种方法,比如下面的三种方法。我注意到它们都在执行相同的函数,唯一改变的是方法的名称和if条件。有没有什么聪明的方法可以使一个通用的方法能够处理以下情况
旁注:callXCD是具有这些方法的当前对象的子对象,其“isNational()”等方法受到保护
public int getNationalTelephonyCost(){
if(callXCD.isNational() && callXCD.isTelephony())
return Integer.parseInt(callXCD.getDiscountedAmount());
else
return 0;
}
public int getOnNetTelephony(){
if(callXCD.isOnNet() && callXCD.isTelephony() && callXCD.isMobileOriginating())
return Integer.parseInt(callXCD.getDiscountedAmount());
else
return 0;
}
public int getLocalData(){
if(callXCD.isLocal() && callXCD.isData())
return Integer.parseInt(callXCD.getDiscountedAmount());
else
return 0;
}
# 1 楼答案
你可以把一个大的
if else if else if else
链放到一个方法中,这个方法覆盖了你所有的if
条件例如
应该有用
# 2 楼答案
一种方法是将条件提取为谓词类。如果我们能有Lambda表达式就更好了,但唉,这是Java
它可能是这样的:
然后用
getSomething(localData)
或getSomething(nationalTelephony)
来调用它# 3 楼答案
我不太确定调用它的代码是什么样子的,但这可能是
enum
方法的一个很好的候选者;这些条件中的每一个都可以简化为callXCD
上的boolean
表达式,您可以声明