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