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!

  

 

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