public override void Audit(AuditContext auditContext) { if (auditContext.time <= this._time) { auditContext.AuditResult = true; auditContext.AuditRemark = auditContext.AuditRemark + $"{this._name},批准通过"; } else { if (base.getAuditor() == null) { auditContext.AuditResult = false; auditContext.AuditRemark = auditContext.AuditRemark + "时间太长,审批不通过"; } else { auditContext.AuditRemark = auditContext.AuditRemark + $"{this._name}向上级申请,"; base.getAuditor().Audit(auditContext); } } }
static void Main(string[] args) { ///生成责任链关系 baseAuditor PM = new AuditManager(8, "PM"); baseAuditor charge = new AuditManager(16, "主管"); baseAuditor manager = new AuditManager(24, "经理"); PM.nextAuditor(charge); charge.nextAuditor(manager); //使用责任链,这里请假的人员只需要向PM请假,PM会向上一级,逐级批准 AuditContext auditContext = new AuditContext(); auditContext.time = 8; auditContext.name = "meimei"; PM.Audit(auditContext); Console.WriteLine($"{auditContext.name}请假{auditContext.time}小时,{auditContext.AuditRemark}"); auditContext.AuditRemark = ""; auditContext.time = 16; auditContext.name = "dada"; PM.Audit(auditContext); Console.WriteLine($"{auditContext.name}请假{auditContext.time}小时,{auditContext.AuditRemark}"); auditContext.AuditRemark = ""; auditContext.time = 24; auditContext.name = "nimei"; PM.Audit(auditContext); Console.WriteLine($"{auditContext.name}请假{auditContext.time}小时,{auditContext.AuditRemark}"); auditContext.AuditRemark = ""; auditContext.time = 30; auditContext.name = "helloWorld"; PM.Audit(auditContext); Console.WriteLine($"{auditContext.name}请假{auditContext.time}小时,{auditContext.AuditRemark}"); Console.ReadLine(); }
abstract public void Audit(AuditContext auditContext);