public class Son extends Handler {// 儿子只处理母亲的请求public Son() {super(Handler.SON_LEVEL_REQUEST);}// 儿子的答复protected void response(IWomen women) {System.out.println("--------母亲向儿子请示-------");System.out.println(women.getRequest());System.out.println("儿子的答复是:同意\n");}}
public class Women implements IWomen {/*** 通过一个int类型的参数来描述妇女的个人状况 1--未出嫁 * 2--出嫁 * 3--夫死*/private int type = 0;// 妇女的请示private String request = "";// 构造函数传递过来请求public Women(int _type, String _request) {this.type = _type; // 为了便于显示 , 在这里做了点处理switch (this.type) {case 1:this.request = "女儿的请求是:" + _request;break;case 2:this.request = "妻子的请求是:" + _request;break;case 3:this.request = "母亲的请求是:" + _request;}}// 获得自己的状况public int getType() {return this.type;}// 获得妇女的请求public String getRequest() {return this.request;}}
public class Client {public static void main(String[] args) {// 随机挑选几个女性Random rand = new Random();ArrayList
在中设置请求的传递顺序 , 先向父亲请示 , 不是父亲应该解决的问题 , 则由父亲 传递到丈夫类解决 , 若不是丈夫类解决的问题则传递到儿子类解决 , 最终的结果必然有一个 返回 , 其运行结果如下所示:
业务调用类不用再去做判断到底是需要谁去处理 , 而且抽象类的子类可以继续增加下去 , 只需要扩展传递链而已 , 调用类可以不用了解变化过程 , 甚至是谁在处理这个请求都不用知道 。
责任链模式优缺点 责任链模式优点责任链模式缺点
责任链模式应用场景
在以下情况下可以考虑使用职责链模式:
?? 设计模式—— 十五 :命令模式
?? 设计模式—— 十七:装饰器模式
参考:
【1】:《设计模式之禅》
【2】:《--java》
【设计模式—— 十六 :责任链模式】【3】:《研磨设计模式》
- 各有所长的清洁工 —— Java虚拟机的垃圾收集器清单
- 读书 | 设计模式之禅 - 责任链模式
- 基于Faddeev算法的卡尔曼滤波FPGA实现——QMJ
- 扫描网络工具—SPARTA的使用
- 查询功能——“模糊查询”
- 鸿蒙开源第三方组件——日期和时间处理组件JodaTime-ohos
- 基于FPGA设计的kalman滤波器——QMJ
- Strategy 设计模式第2讲——策略模式
- 卷积神经网络的FPGA硬件加速——QMJ
- Python每日一学 02——对象与变量