1700482144
return amount;
1700482145
1700482146
}
1700482147
1700482148
public void setAmount(int amount){
1700482149
1700482150
this.amount=amount;
1700482151
1700482152
}
1700482153
1700482154
}
1700482155
1700482156
两个最简单也是在应用中最常使用的对象定义完毕,下面就需要来定义策略了,非常明显的策略模式,类图如图35-2所示。
1700482157
1700482158
1700482159
1700482160
1700482161
图35-2 扣款策略类图
1700482162
1700482163
典型的策略模式,扣款有两种策略:固定扣款和自由扣款。下面我们来看代码,先看抽象策略,也就是扣款接口,如代码清单35-3所示。
1700482164
1700482165
代码清单35-3 扣款策略接口
1700482166
1700482167
public interface IDeduction{
1700482168
1700482169
//扣款,提供交易和卡信息,进行扣款,并返回扣款是否成功
1700482170
1700482171
public boolean exec(Card card,Trade trade);
1700482172
1700482173
}
1700482174
1700482175
固定扣款的规则是固定金额和自由金额各扣除交易金额的一半,如代码清单35-4所示。
1700482176
1700482177
代码清单35-4 扣款策略一
1700482178
1700482179
public class SteadyDeduction implements IDeduction{
1700482180
1700482181
//固定性交易扣款
1700482182
1700482183
public boolean exec(Card card,Trade trade){
1700482184
1700482185
//固定金额和自由金额各扣除50%
1700482186
1700482187
int halfMoney=(int)Math.rint(trade.getAmount()/2.0);
1700482188
1700482189
card.setFreeMoney(card.getFreeMoney()-halfMoney);
1700482190
1700482191
card.setSteadyMoney(card.getSteadyMoney()-halfMoney);
1700482192
1700482193
return true;
[
上一页 ]
[ :1.700482144e+09 ]
[
下一页 ]