我的处女作——设计模式之状态模式( 三 )

/// public override bool PendingAudit(OrderStateHelper helper){return UpdateState(helper, OrderStateEnum.PendingAudit);}}}
(待审核状态)类
继承类,待审核状态可以变成审核通过、审核不通过,所以重写(审核通过)和(审核不通过)方法
namespace Solution.Logic.Order.OrderState{/// /// 待审核状态类/// public class PendingAuditState : OrderState{/// /// 待审核可以变成审核未通过状态,所以重写审核未通过方法/// /// 订单状态操作类public override bool AuditNotPass(OrderStateHelper helper){return UpdateState(helper, OrderStateEnum.AuditNotPass);}/// /// 待审核可以变成审核通过状态,所以重写审核通过方法/// /// 订单状态操作类/// public override bool AuditPass(OrderStateHelper helper){return UpdateState(helper, OrderStateEnum.AuditPass);}
(审核通过状态)类
继承类,由于审核通过状态已经结束,所以不重写任何方法
namespace Solution.Logic.Order.OrderState{/// /// 审核通过状态类/// public class AuditPassState : OrderState{}}
和(审核不通过状态)类
继承类,由于审核不通过状态已经结束,所以不重写任何方法
namespace Solution.Logic.Order.OrderState{/// /// 审核不通过状态类/// public class AuditNotPassState : OrderState{}}
(订单状态枚举)类
这里我重点说明一下 枚举状态的名字和类名去掉State后缀一样,保持这个规则,方便用反射实现订单状态的变更
namespace Solution.Logic.Order.OrderState{/// /// 订单状态枚举/// public enum OrderStateEnum{#region 订单状态枚举/// ///待提交/// [Description("待提交")] PendingSubmission = 1,/// ///待审核/// [Description("待审核")] PendingAudit = 3,/// ///审核通过/// [Description("审核通过")] AuditPass = 5,/// ///审核未通过/// [Description("审核未通过")] AuditNotPass = 7#endregion 订单状态枚举}}
调用方法如下
var orderStateHelper = new OrderStateHelper(userId, orderId, state);var isChange =orderStateHelper.ChangState(newState);