美文网首页
责任链模式(行为型)

责任链模式(行为型)

作者: 游牧族人 | 来源:发表于2018-09-08 16:52 被阅读6次

    定义:
    将多个对象连成一条链,沿着这条链传递请求,直到有一个对象处理它为止,使得多个对象都有机会处理该请求。
    两个角色:
    抽象处理者:定义处理请求的接口
    具体处理者:具体处理模块,有两种策略,一种是直接处理请求,若当前请求无法被处理那么则请求上一级的处理者继续处理请求。

    // 抽象处理者类,用来定义处理接口
    public abstract class AbstractHandler
    {
        private AbstractHandler handler;
    
        public abstract void handle(String str);
    
        public void setHandler(AbstractHandler handler){
            this.handler = handler;
        }
    
        public AbstractHandler getHandler() {
            return handler;
        }
    }
    -------------------------------------------------------------------------------------
    // 三个具体处理者,用来处理各自相应的请求,处理不了则请求上一级进行处理
    public class HandlerA extends AbstractHandler
    {
        @Override
        public void handle(String str)
        {
            if("A".equals(str)){
                System.out.println("HandlerA 开始处理");
            }else{
                super.getHandler().handle(str);
            }
        }
    }
    public class HandlerB extends AbstractHandler
    {
        @Override
        public void handle(String str)
        {
            if("B".equals(str)){
                System.out.println("HandlerB 开始处理");
            }else{
                super.getHandler().handle(str);
            }
        }
    }
    public class HandlerC extends AbstractHandler
    {
        @Override
        public void handle(String str)
        {
            System.out.println("HandlerC 开始处理");
        }
    }
    
    // 客户端
    public class Client
    {
        public static void main(String[] args)
        {
            AbstractHandler handlerA,handlerB,handlerC;
            handlerA = new HandlerA();
            handlerB = new HandlerB();
            handlerC = new HandlerC();
    
            handlerA.setHandler(handlerB);
            handlerB.setHandler(handlerC);
    
            handlerA.handle("A");
            handlerA.handle("B");
            handlerA.handle("C");
        }
    }
    
    Output:
    HandlerA 开始处理
    HandlerB 开始处理
    HandlerC 开始处理
    

    相关文章

      网友评论

          本文标题:责任链模式(行为型)

          本文链接:https://www.haomeiwen.com/subject/jcxlgftx.html