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