有时候一个功能不能一次处理完,需要走多个流程,这时候可以用责任链模式。
例如公司采购用品,但这个用品需要好几个审批流程才能完成
采购用品类,有两个属性:用品名称,单价,通过构造函数传入。
审批流程,有两个属性,一个是审批人名字,通过构造函数传入,一个是它的下一个流程。有一个方法,就是审批方法
类图如下:
审批的代码:
public class Manager : Approved { public Manager(string name) : base(name) { } public override void ProcessRequest(PurchaseRequest request) { if (request.Amout<10000) { Console.WriteLine("{0}-{1} approved this request of purchase {2}", this.GetType().Name, Name, request.ProductName); } else { if (NextApproved!=null) { NextApproved.ProcessRequest(request); } else Console.WriteLine("can't approced ,need meeting."); } } }
源码