java实现23种设计模式之责任链模式

顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。

在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。

1package com.ceshi16; 2 3public interface Handler { 4 public void operator(); 5} 6 7package com.ceshi16; 8 9public abstract class AbstractHandler { 10 private Handler handler; 11 12 public Handler getHandler() { 13 return handler; 14 } 15 16 public void setHandler(Handler handler) { 17 this.handler = handler; 18 } 19} 20 21package com.ceshi16; 22 23public class MyHandler extends AbstractHandler implements Handler{ 24 25 private String name; 26 27 public MyHandler(String name) { 28 this.name = name; 29 } 30 31 @Override 32 public void operator() { 33 System.out.println(name+"deal!"); 34 if(getHandler()!=null){ 35 getHandler().operator(); 36 } 37 } 38 39} 40 41package com.ceshi16; 42 43public class Test { 44 45 public static void main(String[] args) { 46 MyHandler h1 = new MyHandler("h1"); 47 MyHandler h2 = new MyHandler("h2"); 48 MyHandler h3 = new MyHandler("h3"); 49 50 h1.setHandler(h2); 51 h2.setHandler(h3); 52 53 h1.operator(); 54 } 55}

结果:

其实,责任链模式的处理原则是 "如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。"

所以实例并不能体现出这个。通常需要在operator方法中添加一些额外的判定。

点赞
收藏

评论区

加载中...

相关推荐

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Dubbo架构设计与源码解析(三)责任链模式

责任链模式是设计模式中简单且常见的设计模式,可能我们日常中也会经常应用责任链模式,dubbo中的责任链模式将灵活性发挥的很充分。

一分钟学会、三分钟上手、五分钟应用,快速上手责任链框架详解 | 京东云技术团队

责任链模式是开发过程中常用的一种设计模式,在SpringMVC、Netty等许多框架中均有实现。我们日常的开发中如果要使用责任链模式,通常需要自己来实现,但自己临时实现的责任链既不通用,也很容易产生框架与业务代码耦合不清的问题,增加CodeReview的成本。

我好像发现了一个Go的Bug?

从一次重构说起这事儿还得从一次重构优化说起。最近在重构一个路由功能,由于路由比较复杂,需求变化也多,于是想通过责任链模式来重构,刚好这段时间也在SentinelGo中看到相关源码。用责任链模式,最大的好处是可以针对每次请求灵活地插拔路由能力,如:这样实现会在每次请求到来时去new出整个责任链,可以预见对象会频繁的创建、销毁。对Java来说,对象池

Apache commons chain 初探

Apachecommonschain是什么Apachecommonchain是对责任链设计模式的改造封装,让使用者更加方便的使用。简单回顾一下责任链设计模式在阎宏博士的《JAVA与模式》一书中开头是这样描述责任链(ChainofResponsibility)模式的:责任链模式是一种对象的行为模式。在