java设计模式之责任链模式
目录
一、责任链模式(Chain of Responsibility Pattern)
一、责任链模式(Chain of Responsibility Pattern)
有多个对象,每个对象持有对下一个对象的引用,这样就会形成一条链,请求在这条链上传递,直到某一对象决定处理该请求。但是发出者并不清楚到底最终那个对象会处理该请求,所以,责任链模式可以实现,在隐瞒客户端的情况下,对系统进行动态的调整。这就有点类似我们在java程序上的递归方法
(web应该中学习到的Filter其实就是一个责任链设计模式)
二、demo:
定义一个接口
/**
* Created by yjl on 2020/11/29.
* 责任链模式:博文介绍链接:https://blog.csdn.net/qq_27471405/article/details/110340571
* 公众号:灵儿的笔记
*/
public interface Filter {
public void handler();
}
定义一个实现类,实现类里实现调用的传递
/**
* Created by yjl on 2020/11/29.
* 责任链模式:博文介绍链接:https://blog.csdn.net/qq_27471405/article/details/110340571
*/
public class AFilter implements Filter{
private String name;
private Filter filter;
public AFilter() {
}
public AFilter(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Filter getFilter() {
return filter;
}
public void setFilter(Filter filter) {
this.filter = filter;
}
@Override
public void handler() {
System.out.println("name="+name);
if(getFilter()!=null){
getFilter().handler();
}
}
}
最后,在测试类上调用
/**
* Created by yjl on 2020/11/29.
* 责任链模式:博文介绍链接:https://blog.csdn.net/qq_27471405/article/details/110340571
*/
public class TestFilter {
public static void main(String[] args) {
AFilter a1= new AFilter("a1");
AFilter b1 = new AFilter("b1");
AFilter c1 = new AFilter("c1");
a1.setFilter(b1);
b1.setFilter(c1);
a1.handler();
}
}
运行结果: