public override void Audit(ApplyContext context) { if (context.Hour <= 16) { context.AuditResult = true; context.AuditRemark = "Enjoy your vacation"; } else { //Manager manager = new Manager() //{ // Name = "Gain" //}; //manager.Audit(context); if (base._NextAudtitor == null) { context.AuditResult = false; context.AuditRemark = "审批不通过"; } else { base._NextAudtitor.Audit(context); } } }
public override void Audit(ApplyContext context) { context.AuditRemark += "PM开始处理";//不纯粹的责任链 if (context.Hour <= 8) { context.AuditResult = true; context.AuditRemark = "Enjoy your vacation"; } else { //Charge charge = new Charge() //{ // Name = "ObjectIsNotFound" //}; //charge.Audit(context); if (base._NextAudtitor == null) { context.AuditResult = false; context.AuditRemark = "审批不通过"; } else { base._NextAudtitor.Audit(context); } } }
public override void Audit(ApplyContext context) { Console.WriteLine("PM approval"); if (context.Hour <= 8) { context.AuditResult = true; context.AuditRemark = "Enjoy"; } else { base._auditor?.Audit(context); } //else //{ // // 代码的坏味道, 这种方式虽然使用者只对PM发起请假请求,但是PM 除了 // // 自己本职工作外,还负责了找到下一个人。 并且如果PM离职或者产生变化。 // // 流程变化,代码不够灵活 // AbstractAuditor charger = new Charge() // { // Name = "Eva" // }; // charger.Audit(context); //} }
public override void Audit(ApplyContext context) { Console.WriteLine("Manager approval"); if (context.Hour <= 24) { context.AuditResult = true; context.AuditRemark = "Enjoy"; } else { _auditor.Audit(context); } }
public override void Audit(ApplyContext context) { Console.WriteLine("CEO approval"); if (context.Hour <= 80) { context.AuditResult = true; context.AuditRemark = "Enjoy"; } else { context.AuditResult = false; context.AuditRemark = "No way"; } }
public override void Audit(ApplyContext context) { if (context.Hour <= 24) { context.AuditResult = true; context.AuditRemark = "Enjoy your vacation"; } else { if (base._NextAudtitor == null) { context.AuditResult = false; context.AuditRemark = "审批不通过"; } else { base._NextAudtitor.Audit(context); } } }
static void Main(string[] args) { try { Console.WriteLine("欢迎来到.net高级班公开课之设计模式特训,今天是Eleven老师为大家带来的责任链模式"); ApplyContext context = new ApplyContext() { Id = 506, Name = "yoyo", Hour = 40, Description = "我想参加软谋教育的线下聚会", AuditResult = false, AuditRemark = "" }; BaseAuditor auditor = AuditorManager.GetAuditor(); auditor.Audit(context); //PM pm = new PM() //{ // Name = "一点半" //}; //Charge charge = new Charge() //{ // Name = "ObjectIsNotFound" //}; //Manager manager = new Manager() //{ // Name = "Gain" //}; //pm.SetNext(charge); //charge.SetNext(manager); //pm.Audit(context); if (context.AuditResult) { Console.WriteLine("审批通过"); } else { Console.WriteLine("审批没通过"); } //pm.Audit(context); //if (context.AuditResult) //{ // Console.WriteLine("审批通过"); //} //else //{ // Console.WriteLine("审批没通过"); //} ////找人逻辑都写在上端 //pm.Audit(context); //if (context.AuditResult) //{ // Console.WriteLine("PM审批通过"); //} //else //{ // charge.Audit(context); // if (context.AuditResult) // { // Console.WriteLine("主管审批通过"); // } // else // { // manager.Audit(context); // if (context.AuditResult) // { // Console.WriteLine("经理审批通过"); // } // else // { // } // } //} ////审批逻辑都写在上端 //if (context.Hour <= 8) //{ // Console.WriteLine("PM审批通过"); //} //else if (context.Hour <= 16) //{ // Console.WriteLine("主管审批通过"); //} //else //{ // Console.WriteLine("************"); //} } catch (Exception ex) { Console.WriteLine(ex.Message); } Console.Read(); }
static void Main(string[] args) { try { Console.WriteLine("Mock a leave request process"); ApplyContext context = new ApplyContext() { Id = 1, Name = "Ivan", Hour = 100, Description = "leave", AuditRemark = "", AuditResult = false }; { // 1. 初级开发 // // 所有逻辑都写在上端 // // 首先是项目经理审批 // if (context.Hour <= 8) // { // context.AuditResult = true; // context.AuditRemark = "Enjoy"; // } // else // { // // 找项目经理审批 // if (context.Hour <= 16) // { // context.AuditResult = true; // context.AuditRemark = "Enjoy"; // } // } } // 2. 中级开发 知道封装了 把逻辑封装到对象里面去 而且知道使用父类 抽象 // 缺乏远见, 系统还不够扩展,对系统设计缺乏概念, 没有长远考虑 { AbstractAuditor pm = new PM() { Name = "Ivan" }; pm.Audit(context); if (!context.AuditResult) { AbstractAuditor charger = new Charge() { Name = "Eva" }; charger.Audit(context); //时间更长呢,或者更多角色 } } { // 生活中怎么样呢 我找项目经理, 经理不通过, 找主管 AbstractAuditor pm = new PM() { Name = "Ivan" }; pm.Audit(context); // if (!context.AuditResult) // { // AbstractAuditor charger = new Charge() // { // Name = "Eva" // }; // charger.Audit(context); // //时间更长呢,或者更多角色 // if (!context.AuditResult) // { // AbstractAuditor manager = new Manager() // { // Name = "Elena" // }; // manager.Audit(context); // if (!context.AuditResult) // { // AbstractAuditor ceo = new CEO() // { // Name = "Recheal" // }; // ceo.Audit(context); // } // } // } } { AbstractAuditor pm = new PM() { Name = "Ivan" }; AbstractAuditor charger = new Charge() { Name = "Eva" }; AbstractAuditor manager = new Manager() { Name = "Elena" }; AbstractAuditor chief = new Chief() { Name = "jack" }; AbstractAuditor ceo = new CEO() { Name = "Recheal" }; // pm.SetNext(charger); // charger.SetNext(manager); // manager.SetNext(chief); // chief.SetNext(ceo); pm.SetNext(manager); manager.SetNext(ceo); //可以随意调整顺序及流程 // 把环节初始化,把流程配置都转移到一个builder里面去 pm.SetNext(charger).SetNext(manager).SetNext(ceo).Audit(context); } if (context.AuditResult) { Console.WriteLine("Vocation Approved"); } else { Console.WriteLine("Resign"); } } catch (Exception e) { Console.WriteLine(e.Message); throw; } }
public abstract void Audit(ApplyContext context);