Ejemplo n.º 1
0
 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);
         }
     }
 }
Ejemplo n.º 2
0
        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);
                }
            }
        }
Ejemplo n.º 3
0
        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);
            //}
        }
Ejemplo n.º 4
0
 public override void Audit(ApplyContext context)
 {
     Console.WriteLine("Manager approval");
     if (context.Hour <= 24)
     {
         context.AuditResult = true;
         context.AuditRemark = "Enjoy";
     }
     else
     {
         _auditor.Audit(context);
     }
 }
Ejemplo n.º 5
0
 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";
     }
 }
Ejemplo n.º 6
0
 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);
         }
     }
 }
Ejemplo n.º 7
0
        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();
        }
Ejemplo n.º 8
0
        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);