美文网首页
设计模式—— 责任链模式

设计模式—— 责任链模式

作者: NLper小白 | 来源:发表于2021-12-07 10:39 被阅读0次

    责任链模式——行为模式

    定义

    将请求的发送和接收解耦,让多个接收对象都有机会处理这个请求。将这些接收对象串成一条链,并沿着这条链传递这个请求,知道链上的某个接收对象能够处理它为止。如果某个节点处理完了就可以根据实际业务需求传递给下一个节点继续处理或者返回处理完毕。
    

    责任链模式的角色

    1. Client(客户端): 实例化一个处理器的链,在第一个链对象中调用handleRequest方法
    2. Handle(处理器):抽象类,提供给实际处理器继承然后实现handleRequest方法,处理请求
    3. ConcreteHandler(具体处理器):继承了handler的类,同时实现handleRequest方法,负责处理业务逻辑类,不同业务模块有不同的ConcreteHandler
    

    代码实现

    1. 抽象类处理器

    // 抽象类处理器
    abstract class Handler{
    
        protected Handler handler;
    
        public void setHandler(Handler handler){
            this.handler = handler;
        }
        //抽象处理方法
        public abstract void handleRequest(Integer times);
    }
    

    2.具体类处理器

    //具体类处理器
    class FirstInterview extends Handler{
    
        @Override
        public void handleRequest(Integer times) {
            // 判断是否属于当前handler处理范围,不是则向下传递Handler处理器
            if (times == 1){
                System.out.println("第一次面试"+times);
            }
            handler.handleRequest(times);
        }
    }
    class SecondInterview extends Handler{
    
        @Override
        public void handleRequest(Integer times) {
            // 判断是否属于当前handler处理范围,不是则向下传递Handler处理器
            if (times == 2){
                System.out.println("第二次面试"+times);
            }
            handler.handleRequest(times);
        }
    }
    class ThreeInterview  extends Handler{
    
        @Override
        public void handleRequest(Integer times) {
            // 判断是否属于当前handler处理范围,不是则向下传递Handler处理器
            if (times == 3){
                System.out.println("第三次面试"+times+"面试通过");
            }
        }
    }
    

    3. 测试类

    public class ResponsibilityDesign {
        public static void main(String[] args){
            Handler fisrt = new FirstInterview();
            Handler second = new SecondInterview();
            Handler three = new ThreeInterview();
            //责任链处理流程
            fisrt.setHandler(second);
            second.setHandler(three);
            // 第一次面试
            fisrt.handleRequest(1);
            System.out.println();
            // 第二次面试
            second.handleRequest(2);
            System.out.println();
            // 第三次面试
            three.handleRequest(3);
            System.out.println();
        }
    }
    

    相关文章

      网友评论

          本文标题:设计模式—— 责任链模式

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