Java中的责任链设计模式,太牛了!
责任链设计模式的思想很简单,就是按照链的顺序执行一个个处理方法,链上的每一个任务都持有它后面那个任务的对象引用,以方便自己这段执行完成之后,调用其后面的处理逻辑。
下面是一个责任链设计模式的简单的实现:
public interface Task {
public void run();
}
public class Task1 implements Task{
private Task task;
public Task1() {}
public Task1(Task task){
this.task = task;
}
@Override
public void run() {
System.out.println("task1 is run");
if(task != null){
task.run();
}
}
}
public class Task2 implements Task{
private Task task;
public Task2() {}
public Task2(Task task){
this.task = task;
}
@Override
public void run() {
System.out.println("task2 is run");
if(task != null){
task.run();
}
}
}
public class Task3 implements Task{
private Task task;
public Task3() {}
public Task3(Task task){
this.task = task;
}
@Override
public void run() {
System.out.println("task3 is run");
if(task != null){
task.run();
}
}
}
这个和服务器的过滤器有点类似,过滤器的实现也都是实现了同一个接口Filter。
public class LiabilityChain {
public void runChain(){
Task task3 = new Task1();
Task task2 = new Task2(task3);
Task task1 = new Task3(task2);
task1.run();
}
}
以上是一个责任链的简单的实现,如果想要深入理解其思想,建议去观察一个过滤器链的执行源码。
作者:Mazin
https://my.oschina.net/u/3441184/blog/889552
- END -
推荐阅读:
关注Java技术栈公众号在后台回复:设计模式,可获取一份栈长整理的设计模式教程,都是干货。
点击「阅读原文」和栈长学更多~
关注微信公众号福利!!!
回复关键字「666」获取一份最新 Java 架构资料,你要的都有!
回复关键字「Java」获取JVM, 多线程等Java技术系列教程;
回复关键字「spring」获取Spring, Spring Boot, Spring Cloud教程;
回复关键字「架构」获取分布式、微服务、架构、高并发等系列干货;
回复关键字「面试」获取各种 Java 面试题及答案、面试实战经验;