public override void Process(Request request) { }
public override void Process(Request request) { request.Price *= 1.3; }
public void HandleRequest(Request request) { if (request == null) return; if (request.Type == Type) { //process(Request); } else { if (Successors.Count > 0) foreach (IHandler successor in Successors) successor.HandleRequest(request); } }
//需要具体IHandler类型处理的内容 public abstract void Process(Request request);
//按照链式方式依次把调用继续下去 public virtual void HandleRequest(Request request) { if (HasBreakPoint && Break != null) Break(this, new CallHandlerEventArgs(this, request)); if (request == null) return; if (request.Type == Type) Process(request); else if (Successor != null) successor.HandleRequest(request); }
public CallHandlerEventArgs(IHandler handler,Request request) { this.handler = handler; this.request = request; }