public override bool Filter(LeaveContext leaveContext, Chain chain) { leaveContext.Description = leaveContext.Description.Replace("123", "2.经理"); //Console.Write($"***{leaveContext.Description}"); chain.Filter(leaveContext); leaveContext.AuditRemark = $"{Name}: 修改-->"; Console.WriteLine($"{leaveContext.AuditRemark}"); return(true); }
public override bool HandlerLeaveRequest(LeaveContext leaveContext) { if (leaveContext.Day > 15 && leaveContext.Day <= this.Days) { Console.Write($"职位:{Name}: 审批通过."); return(false); } return(true); }
public bool Filter(LeaveContext leaveContext) { if (index == handlers.Count) { return(false); } var handler = handlers[index]; index++; return(handler.Filter(leaveContext, this)); }
public bool HandlerLeaveRequest(LeaveContext leaveContext) { foreach (var handler in handlers) { if (!handler.HandlerLeaveRequest(leaveContext)) { return(false); } } return(true); }
public override bool HandlerLeaveRequest(LeaveContext leaveContext) { if (leaveContext.Day > 7 && leaveContext.Day <= this.Days) { Console.Write($"职位:{Name} : 审批通过."); return(false); } return(true); //else 第一种 //{ // NextLeaveRequest(leaveContext); // return; //} }
static void Main(string[] args) { var ment = new 主管() { Name = "刘主管", Days = 7 }; var manager = new 经理() { Name = "孙经理", Days = 15 }; var ceo = new 总裁() { Name = "张总裁", Days = 30 }; var context = new LeaveContext() { Day = 12, Description = "shuoming,123,ABC" }; #region 第一种 顺序排列:依次转交 //ment.SetHandler(manager) ; //manager.SetHandler(ceo); //ment.HandlerLeaveRequest(context); #endregion #region 第二种 无序排列 :只要结果 //var chain = new Chain(); //链 //chain.Add(ment).Add(manager).Add(ceo); //chain.HandlerLeaveRequest(context); #endregion #region 第三种 无序排列 :过滤 var chain = new Chain(); //链 chain.Add(ment).Add(manager).Add(ceo); chain.Filter(context); #endregion Console.ReadLine(); }
public abstract bool Filter(LeaveContext leaveContext, Chain chain);
public abstract bool HandlerLeaveRequest(LeaveContext leaveContext);
protected void NextLeaveRequest(LeaveContext leaveContext) { NextHandler.HandlerLeaveRequest(leaveContext); }