责任链模式
责任链模式(Chain of Responsibility Pattern)是一种常见的行为模式。
使多个对象都有处理请求的机会,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象串成一条链,并沿着这条链一直传递该请求,直到有对象处理它为止。
责任链模式的重点在“链上”,由一条链去处理相似的请求,在链中决定谁来处理这个请求,并返回相应的结果。
角色
抽象处理者(Handler)角色:
该角色对请求进行抽象,并定义一个方法来设定和返回对下一个处理者的引用。
具体处理者(Concrete Handler):
该角色接到请求后,**可以选择将请求处理掉,或者将请求传给下一个处理者。**由于具体处理者持有对下一个处理者的引用,因此,如果需要,处理者可以访问下一个处理者。
示例
/**
* 抽象处理器
*/
public abstract class Handler {
//下一个处理器
private Handler nextHandler;
//处理方法
public abstract void handleRequest();
public Handler getNextHandler() {
return nextHandler;
}
public void setNextHandler(Handler nextHandler) {
this.nextHandler = nextHandler;
}
}
/**
* 具体处理器.
*/
public class ConcreteHandler extends Handler {
@Override
public void handleRequest() {
// 当前处理器处理
System.out.println(this.toString()+"处理器处理");
// 下一个处理器处理
if (getNextHandler()!=null){
getNextHandler().handleRequest();
}
}
}
public class Client {
public static void main(String[] args) {
Handler h1 = new ConcreteHandler();
Handler h2 = new ConcreteHandler();
// h1的下一个处理器是h2
h1.setNextHandler(h2);
h1.handleRequest();
}
}
参考 https://www.cnblogs.com/aeolian/p/8888958.html