我有一个场景,卖家配置了以下费用:
BigDecimal paidPlanFixedFee
BigDecimal fixedFee
Boolean isPaidPlan
现在,如果卖方有付费计划,则应使用paidPlanFixedFee,同时触发付款;如果卖方采用免费计划,则应使用fixedFee。
一种方法是在引用fixedFee的所有地方更改代码,例如:
if(paidPlan){
// Use paidPlanFixedFee
}else{
// Use fixedFee
}
另一种方法是仅在fixedFee的getter方法中进行更改:
BigDecimal getFixedFee(){
if(paidPlan){
// return paidPlanFixedFee
} else{
// return fixedFee
}
}
在这种情况下使用 getter 方法是一个好的做法还是应该避免?
最佳答案
看起来用这个逻辑重写 getter 并不是一个好主意。在这种情况下,您应该控制每个 getter 的使用(例如 json 序列化或数据库模型映射等),因为如果您需要在某个地方获取原始值,它可能会导致麻烦。
最好有单独的calculateFee()方法
transient 场怎么样?
如果您要在 groovy 中创建没有实际字段的 getter:
BigDecimal getFee(){
paidPlan ? paidPlanFixedFee : fixedFee
}
然后你就可以像访问常规字段一样访问它:
println instance.fee
在这种情况下,您需要将固定费用更改为提及固定费用的费用。但在此更改之后,所有 future 的修改都会变得更加容易。
关于java - Getter方法使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53114466/