有时候一个功能不能一次处理完,需要走多个流程,这时候可以用责任链模式。

例如公司采购用品,但这个用品需要好几个审批流程才能完成

采购用品类,有两个属性:用品名称,单价,通过构造函数传入。

审批流程,有两个属性,一个是审批人名字,通过构造函数传入,一个是它的下一个流程。有一个方法,就是审批方法

类图如下:

 

 

审批的代码:

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.");
            }
        }
    }

源码