我有一个 GiftCouponPayment 课程。它有一个可以经常改变的商业策略逻辑——GetCouponValue()。目前的逻辑是“当Coupon Number小于2000时,coupon value应该被认为是0”。在未来的商业策略中,它可能会更改为“当优惠券发行日期小于 1/1/2000 时,优惠券价值应视为零”。它可以根据公司的管理部门更改为任何此类策略。
我们如何使用策略模式重构 GiftCouponPayment 类,以便在 GetCouponValue 方法的策略时不需要更改该类?
更新:分析职责后,我觉得“GiftCoupon”将是“GiftCouponPayment”类的更好名称。
C# 代码
public int GetCouponValue()
{
int effectiveValue = -1;
if (CouponNumber < 2000)
{
effectiveValue = 0;
}
else
{
effectiveValue = CouponValue;
}
return effectiveValue;
}
阅读