Java设计模式(19)——行为模式之责任链模式(chain of responsibilitiy)
2023-09-27 14:23:45 时间
一、概述
概念
UML简图
角色
抽象处理器:定义处理请求的接口
具体处理器:接收到请求后可以选择处理,也可以选择发给下家处理(持有下家的引用)
当然这里必须指出,实际中纯的责任链模式很难寻找,一般是不纯的责任链模式:也就是一个处理器承担了部分请求,再把部分传递给下家
而纯的责任链则是要求一个处理器只能有承担责任和传递给下家的两种情况。一般的,我们见到的是不纯的居多。
二、实践
给出相应角色的代码
抽象处理器
/**
* 抽象处理器接口
*
* @author Administrator
**/
public abstract class Handler {
/**
* 处理器下家,此处采用逻辑为如果有下家则给下家处理,没有下家则自己处理
*/
protected Handler successor;
public Handler getSuccessor() {
return successor;
}
public void setSuccessor(Handler successor) {
this.successor = successor;
}
public abstract void handleRequest();
}
具体处理器
/**
* 具体处理器
*
* @author Administrator
**/
public class ConcreteHandler extends Handler{
@Override
public void handleRequest() {
if (getSuccessor() != null) {
System.out.println("处理转接给:" + getSuccessor());
getSuccessor().handleRequest();
} else {
System.out.println("没有下家处理请求,此处处理请求");
}
}
}
客户端(把请求给第一个处理器)
/**
* 客户端
* @author Administrator
**/
public class Client {
public static void main(String[] args) {
Handler handler1 = new ConcreteHandler();
Handler handler2 = new ConcreteHandler();
// 指出第一个处理器的对象的下家是第二个处理器
handler1.setSuccessor(handler2);
handler1.handleRequest();
}
}
有了上面的基础,我们来看马士兵老师的栗子:
想要定义三个规则应对一个字符串的过滤,分别过滤不同的规则(如HTML过滤,关键字过滤),此实例本质与上面是相通的,请注意看本质!
相关文章
- 【Java设计模式】代理模式(Proxy Pattern)
- Java设计模式-状态模式(State)
- Java设计模式-代理模式(Proxy)
- Java设计模式-原型模式(Prototype)
- Java基础-设计模式之-代理模式Proxy
- 《JAVA与模式》之观察者模式
- Java 设计模式之抽象工厂模式
- Java设计模式(24)——行为模式之解释器模式(Interpreter)
- Java设计模式(13)——结构型模式之桥梁模式(Bridge)
- Java设计模式(2)——创建型模式之工厂方法模式(Factory Method)
- java模式之装饰模式
- JAVA 设计模式 组合模式
- JAVA设计模式之【外观模式】
- Java-马士兵设计模式学习笔记-观察者模式-读取properties文件,动态增加观察者
- java设计模式--事件监听器模式和观察者模式
- Java 利用枚举实现单例模式
- Java 25天基础-DAY 06-面向对象-单例模式
- Java中apache下面FTPClient主动模式和被动模式
- JAVA内置的观察者模式样本
- Java DAO 模式