zoukankan      html  css  js  c++  java
  • [一天一个设计模式]-[责任链模式]

    为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。

    责任链模式主要包含以下角色。

    1. 抽象处理者(Handler)角色:定义一个处理请求的接口,包含抽象处理方法和一个后继连接。
    2. 具体处理者(Concrete Handler)角色:实现抽象处理者的处理方法,判断能否处理本次请求,如果可以处理请求则处理,否则将该请求转给它的后继者。

    举个栗子,打篮球依次传球,每个人就是责任链上的处理器

    interface Player{
        void play(String ball);
    }
    
    class APlayer implements Player{
        Player next;
        
        public Player setNext(Player next){
            this.next = next;
        }
        
        @Override
        public void play(String ball){
            if(ball == "A"){
                sout("shot")
            }else if(next != null){
                next.play(ball);
            }else {
                sout("lose");
            }
        }
    }
    
    class BPlayer implements Player{
        Player next;
        
        public Player setNext(Player next){
            this.next = next;
        }
        
        @Override
        public void play(String ball){
            if(ball == "B"){
                sout("shot")
            }else if(next != null){
                next.play(ball);
            }else {
                sout("lose");
            }
        }
    }
    
    
    main(){
        APlayer a=new APlayer();
        BPlayer b=new BPlayer();
        
        a.setNext(b);
        a.play("A");
        a.play("B");
        a.play("C");
        
    }
    
  • 相关阅读:
    聊聊赚钱
    Java面试官最爱问的volatile关键字
    你适合副业挣钱吗?
    SpringBoot自定义starter及自动配置
    mybatis进阶--输入映射和输出映射
    mybatis入门--初识mybatis
    mybatis入门--#{}和${}的区别
    mybatis入门--mybatis和hibernate比较
    mybatis入门--单表的增删改操作
    mybatis进阶--mapper输入映射和输出映射
  • 原文地址:https://www.cnblogs.com/A-yes/p/12026933.html
Copyright © 2011-2022 走看看