/// <summary> /// 测试 追加的情况. /// </summary> private static void Test2() { Approver wjzhang, gyang, jguo, meeting; wjzhang = new Director("张无忌"); gyang = new VicePresident("杨过"); jguo = new President("郭靖"); meeting = new Congress("董事会"); Approver rhuang; rhuang = new Manager("黄蓉"); //创建职责链 // 将“黄蓉”作为“张无忌”的下家 wjzhang.Successor = rhuang; // 将“杨过”作为“黄蓉”的下家 rhuang.Successor = gyang; gyang.Successor = jguo; jguo.Successor = meeting; //创建采购单 PurchaseRequest pr1 = new PurchaseRequest(45000, 10001, "购买倚天剑"); wjzhang.processRequest(pr1); PurchaseRequest pr2 = new PurchaseRequest(60000, 10002, "购买《葵花宝典》"); wjzhang.processRequest(pr2); PurchaseRequest pr3 = new PurchaseRequest(160000, 10003, "购买《金刚经》"); wjzhang.processRequest(pr3); PurchaseRequest pr4 = new PurchaseRequest(800000, 10004, "购买桃花岛"); wjzhang.processRequest(pr4); }
/// <summary> /// 具体请求处理方法 /// </summary> /// <param name="request"></param> public override void processRequest(PurchaseRequest request) { // 处理请求. Console.WriteLine( "召开董事会审批采购单 审批采购单:{0},金额:{1}元,采购目的:{2}。", request.Number, request.Amount, request.Purpose); }
/// <summary> /// 具体请求处理方法 /// </summary> /// <param name="request"></param> public override void processRequest(PurchaseRequest request) { if (request.Amount < 80000) { // 处理请求. Console.WriteLine( "经理{0} 审批采购单:{1},金额:{2}元,采购目的:{3}。", this.name, request.Number, request.Amount, request.Purpose); } else { // 转发请求. this.Successor.processRequest(request); } }
/// <summary> /// 抽象请求处理方法 /// </summary> /// <param name="request"></param> public abstract void processRequest(PurchaseRequest request);