• Java: Chain of Responsibility Pattern


    /**
     * 版权所有 2022 涂聚文有限公司
     * 许可信息查看:
     * 描述:
     * 责任链模式 Chain of Responsibility Patterns
     * 历史版本: JDK 14.02
     * 2022-09-12 创建者 geovindu
     * 2022-09-12 添加 Lambda
     * 2022-09-12 修改:date
     * 接口类
     * 2022-09-12 修改者:Geovin Du
     * 生成API帮助文档的指令:
     *javadoc - -encoding Utf-8 -d apidoc Player.java
     * Interface
     * Record
     * Annotation
     * Enum
     * */
    
    
    package com.javapatterns.chainofresponsibility;
    
    
    /**
     *抽象 护花者
     *
     *
     * */
    abstract public class Player {
    
        /**
         *请求处理方法
         *
         * */
        abstract public void handle(int i);
        /**
         *
         *
         * */
        private Player successor;
        /**
         *
         *
         * */
        public Player()
        {
            successor = null;
        }
        /**
         *赋值方法 调用此方法设定下家
         *
         * */
        public void setSuccessor(Player aSuccessor)
        {
            successor = aSuccessor;
        }
        /**
         *公开方法,将“花”传给下家,如果没有下家,停止运行
         *
         * */
        public void next(int index)
        {
            if( successor != null )
            {
                successor.handle(index);
            }
            else
            {
                System.out.println("Program terminated.");
                System.exit(0);
            }
        }
    
    }
    

      

    /**
     * 版权所有 2022 涂聚文有限公司
     * 许可信息查看:
     * 描述:
     * 责任链模式 Chain of Responsibility Patterns
     * 历史版本: JDK 14.02
     * 2022-09-12 创建者 geovindu
     * 2022-09-12 添加 Lambda
     * 2022-09-12 修改:date
     * 接口类
     * 2022-09-12 修改者:Geovin Du
     * 生成API帮助文档的指令:
     *javadoc - -encoding Utf-8 -d apidoc JiaMu.java
     * Interface
     * Record
     * Annotation
     * Enum
     * */
    
    package com.javapatterns.chainofresponsibility;
    
    /**
     *贾母
     *
     * */
    public class JiaMu extends Player{
    
        /**
         *以下家为参量
         *
         * */
    
        public JiaMu(Player aSuccessor)
        {
            this.setSuccessor(aSuccessor);
        }
    
        public JiaMu()
        {
    
        }
        /**
         *
         *
         *
        public void  setSuccessor(Player aSuccessor)
        {
            this.setSuccessor(aSuccessor);
    
        }*/
    
        /**
         *请求处理方法
         *
         * */
        public void handle(int i)
        {
            if( i == 1 )
            {
                System.out.println("Jia Mu gotta drink!");
            }
            else
            {
                System.out.println("Jia Mu passed!");
                next(i);
            }
        }
    
    }
    

      

    /**
     * 版权所有 2022 涂聚文有限公司
     * 许可信息查看:
     * 描述:
     * 责任链模式 Chain of Responsibility Patterns
     * 历史版本: JDK 14.02
     * 2022-09-12 创建者 geovindu
     * 2022-09-12 添加 Lambda
     * 2022-09-12 修改:date
     * 接口类
     * 2022-09-12 修改者:Geovin Du
     * 生成API帮助文档的指令:
     *javadoc - -encoding Utf-8 -d apidoc JiaShe.java
     * Interface
     * Record
     * Annotation
     * Enum
     * */
    
    
    package com.javapatterns.chainofresponsibility;
    
    /**
     *贾赦
     *
     * */
    public class JiaShe  extends Player{
    
        /**
         *
         *
         * */
        public JiaShe(Player aSuccessor)
        {
            this.setSuccessor(aSuccessor);
        }
        /**
         *
         *
         * */
        public void handle(int i)
        {
            if( i == 2 )
            {
                System.out.println("Jia She gotta drink!");
            }
            else
            {
                System.out.println("Jia She passed!");
                next(i);
            }
        }
    
    }
    

      

    /**
     * 版权所有 2022 涂聚文有限公司
     * 许可信息查看:
     * 描述:
     * 责任链模式 Chain of Responsibility Patterns
     * 历史版本: JDK 14.02
     * 2022-09-12 创建者 geovindu
     * 2022-09-12 添加 Lambda
     * 2022-09-12 修改:date
     * 接口类
     * 2022-09-12 修改者:Geovin Du
     * 生成API帮助文档的指令:
     *javadoc - -encoding Utf-8 -d apidoc JiaZheng.java
     * Interface
     * Record
     * Annotation
     * Enum
     * */
    
    
    package com.javapatterns.chainofresponsibility;
    
    /**
     *贾政
     *
     * */
    public class JiaZheng  extends Player{
    
        public JiaZheng(Player aSuccessor)
        {
            this.setSuccessor(aSuccessor);
        }
        /**
         *
         *
         * */
        public void handle(int i)
        {
            if( i == 3 )
            {
                System.out.println("Jia Zheng gotta drink!");
            }
            else
            {
                System.out.println("Jia Zheng passed!");
                next(i);
            }
        }
    
    
    }
    

      

    /**
     * 版权所有 2022 涂聚文有限公司
     * 许可信息查看:
     * 描述:
     * 责任链模式 Chain of Responsibility Patterns
     * 历史版本: JDK 14.02
     * 2022-09-12 创建者 geovindu
     * 2022-09-12 添加 Lambda
     * 2022-09-12 修改:date
     * 接口类
     * 2022-09-12 修改者:Geovin Du
     * 生成API帮助文档的指令:
     *javadoc - -encoding Utf-8 -d apidoc JiaHuan.java
     * Interface
     * Record
     * Annotation
     * Enum
     * */
    
    package com.javapatterns.chainofresponsibility;
    
    /**
     *贾环
     *
     * */
    public class JiaHuan extends Player{
    
        /**
         *
         *
         * */
        public JiaHuan(Player aSuccessor)
        {
            this.setSuccessor(aSuccessor);
        }
        /**
         *
         *
         * */
        public void handle(int i)
        {
            if( i == 5 )
            {
                System.out.println("Jia Bao Yu gotta drink!");
            }
            else
            {
                System.out.println("Jia Bao Yu passed!");
                next(i);
            }
        }
    
    }
    

      

    /**
     * 版权所有 2022 涂聚文有限公司
     * 许可信息查看:
     * 描述:
     * 责任链模式 Chain of Responsibility Patterns
     * 历史版本: JDK 14.02
     * 2022-09-12 创建者 geovindu
     * 2022-09-12 添加 Lambda
     * 2022-09-12 修改:date
     * 接口类
     * 2022-09-12 修改者:Geovin Du
     * 生成API帮助文档的指令:
     *javadoc - -encoding Utf-8 -d apidoc JiaBaoYu.java
     * Interface
     * Record
     * Annotation
     * Enum
     * */
    
    package com.javapatterns.chainofresponsibility;
    
    /**
     *贾宝玉
     *
     * */
    public class JiaBaoYu  extends Player{
    
        /**
         *贾宝玉
         *
         * */
        public JiaBaoYu(Player aSuccessor)
        {
            this.setSuccessor(aSuccessor);
        }
        /**
         *
         *
         * */
        public void handle(int i)
        {
            if( i == 4 )
            {
                System.out.println("Jia Bao Yu gotta drink!");
            }
            else
            {
                System.out.println("Jia Bao Yu passed!");
                next(i);
            }
        }
    
    
    }
    

     

    调用试试:

     //责任链模式
                JiaMu jiaMu = new JiaMu(null);
                        jiaMu.setSuccessor( new JiaShe (
                        new JiaZheng(
                                new JiaBaoYu(
                                        new JiaHuan( jiaMu ) ) ) ) );
    
                firstPlayer = jiaMu;
    
                firstPlayer.handle(4);
    

      

    输出:

    Jia Mu passed!
    Jia She passed!
    Jia Zheng passed!
    Jia Bao Yu gotta drink!
    

      

     

  • 相关阅读:
    (005)Linux 复制命令cp总提示是否覆盖的解决方法,在cp前加
    (030)Spring Boot之RestTemplate访问web服务案例
    Gym
    Gym
    Gym.102006:Syrian Collegiate Programming Contest(寒假自训第11场)
    BZOJ-5244 最大真因数(min25筛)
    HDU
    HDU 1272 小希的迷宫(并查集)
    HDU 3038 How Many Answers Are Wrong(带权并查集)
    POJ 1182 食物链(带权并查集)
  • 原文地址:https://www.cnblogs.com/geovindu/p/16732914.html
Copyright © 2020-2023  润新知