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!
哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)生存.---Geovin Du(涂聚文)
浙公网安备 33010602011771号