static public void Main()
        {
            //组装责任链
            Handler handlerA = new ConcreteHandler("ConcreteHandlerA", 9);
            Handler handlerB = new ConcreteHandler("ConcreteHandlerB", 3, handlerA);
            Handler handlerC = new ConcreteHandler("ConcreteHandlerC", 2, handlerB);
            Handler handlerD = new ConcreteHandler("ConcreteHandlerD", 1, handlerC);

            handlerD.HandleRequest(1);  //请求要求等级为1时,D就可以处理
            handlerD.HandleRequest(5);  //请求要求等级为5时,A才能处理
        }
Exemple #2
0
    /*[Test]
     * public void Test() {
     *  ChainOfResponsibility.ConcreteHandler1 handler =
     *      new ChainOfResponsibility.ConcreteHandler1( new ChainOfResponsibility.ConcreteHandler2());
     *
     *  ChainOfResponsibility.ContextForHandler1 context1 = new ChainOfResponsibility.ContextForHandler1();
     *  ChainOfResponsibility.ContextForHandler2 context2 = new ChainOfResponsibility.ContextForHandler2();
     *  ChainOfResponsibility.UnknownContext context3 = new ChainOfResponsibility.UnknownContext();
     *
     *  Assert.IsTrue(handler.HandleRequest(context1));
     *  Assert.IsTrue(handler.HandleRequest(context2));
     *  Assert.IsFalse(handler.HandleRequest(context3));
     * }*/
    ChainOfResponsibility.HandleRequest <ChainOfResponsibility.IContext> CreateHandlers()
    {
        ChainOfResponsibility.ConcreteHandler cls = new ChainOfResponsibility.ConcreteHandler();
        ChainOfResponsibility.HandleRequest <ChainOfResponsibility.IContext> handlers;

        ChainOfResponsibility.HandlerHub <ChainOfResponsibility.IContext> hub =
            new ChainOfResponsibility.HandlerHub <ChainOfResponsibility.IContext>();

        hub.AddHandler(new ChainOfResponsibility.HandleRequest <ChainOfResponsibility.IContext>(cls.HandleRequest2));
        handlers = hub.AddHandler(new ChainOfResponsibility.HandleRequest <ChainOfResponsibility.IContext>(cls.HandleRequest3));
        return(handlers);
    }
Exemple #3
0
        static void Main(string[] args)
        {
            Handler h1 = new ConcreteHandler();
            Handler h2 = new ConcreteHandler2();
            Handler h3 = new ConcreteHandler3();

            h1.SetSucessor(h2);
            h2.SetSucessor(h3);

            var requests = new[] { 1, 2, 35, 67, 23, 78, 43 };

            foreach (var request in requests)
            {
                h1.HandleRequest(request);
            }

            Console.ReadLine();
        }
        static Handler InitializeHandler()
        {
            Handler h1 = new ConcreteHandler("Handler 1");

            h1.Condition = value => value >= 0 && value < 5;

            Handler h2 = new ConcreteHandler("Handler 2");

            h2.Condition = value => value >= 5 && value < 10;

            Handler h3 = new ConcreteHandler("Handler 3");

            h3.Condition = value => value >= 10 && value < 15;

            h1.Successor = h2;
            h2.Successor = h3;

            return(h1);
        }