1 回答
TA贡献1803条经验 获得超6个赞
要知道转账是否已完成,我建议返回一个布尔值,然后检查货币并false如果不同则返回。还可以使用您编写的方法来转账,这也是一个好主意
@Override
public boolean transferMoney(User fromUser, User toUser, int amount) {
if (!checkWithdraw(fromUser, amount)) return false;
if (!checkFund(toUser, amount)) return false;
if (fromUser.getBank().getCurrency() != toUser.getBank().getCurrency()) return false;
withdraw(fromUser, amount);
fund(toUser, amount);
return true;
}
但是,随着方法withdraw和fund检查的进行,会调用冗余代码,您可以这样做:
@Override
public boolean withdraw(User user, int amount) {
if (!checkWithdraw(user, amount)) return false;
user.setBalance(user.getBalance() - amount - amount * user.getBank().getCommission(amount));
return true;
}
@Override
public boolean fund(User user, int amount) {
if (!checkFund(user, amount)) return false;
user.setBalance(user.getBalance() + amount);
return true;
}
@Override
public boolean transferMoney(User fromUser, User toUser, int amount) {
if (fromUser.getBank().getCurrency() != toUser.getBank().getCurrency()) return false;
return withdraw(fromUser, amount) && fund(toUser, amount);
}
解释:
你会打电话给
withdraw
如果有效,它将返回
true
,并且逻辑表达式的第二部分将被测试并执行如果它不起作用(
checkWithdraw
不好),它将返回false
,并且逻辑表达式的第二部分将不会被执行,并且您将不会执行fund
其他帐户如果
withdraw
返回,true
它将调用该fund
方法,并且全局将返回fund
返回 true :true && true
所以返回true
fund
返回 false:true && false
所以返回false
添加回答
举报