public IRebate GetRebator(RebateBaseInfo baseInfo) { switch (baseInfo.ByNumStrategyType) { case RebateByNumStrategy.Simple: return new SimpleRebateByNum(baseInfo.RebateAmount); case RebateByNumStrategy.Condition: return new ConditionRebateByNum(baseInfo.RebateAmount); default: return null; } }
public static IRebate GetRebator(RebateBaseInfo baseInfo) { switch (baseInfo.Type) { case RebateType.ByAmount: var rebateByAmtContext = new RebateByAmtContext(); return rebateByAmtContext.GetRebator(baseInfo); case RebateType.ByNumber: var rebateByNumContext = new RebateByNumContext(); return rebateByNumContext.GetRebator(baseInfo); default: return null; } }
static void Main(string[] args) { //这里mock数据 RebateBaseInfo baseInfo = new RebateBaseInfo() { GoodsNumber = 1, RebateAmount = 5.86m, Type = RebateType.ByNumber, ByNumStrategyType = RebateByNumStrategy.Simple }; IRebate rebator = RebateFactory.GetRebator(baseInfo); Console.Write(rebator.GetRebateAmt(baseInfo)); Console.Read(); }
public abstract decimal GetRebateAmt(RebateBaseInfo rebateBaseInfo);
public override decimal GetRebateAmt(RebateBaseInfo rebateBaseInfo) { return rebateBaseInfo.GoodsNumber * Amount; }
public override decimal GetRebateAmt(RebateBaseInfo rebateBaseInfo) { return rebateBaseInfo.Amount * Percent; }