Java: Chain of Responsibility Patterns

 

/**
 * 版权所有 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!

  

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章