【设计模式】- 责任链篇
简介
-
责任链模式(Chain of Responsibility):使多个对象都有机会处理请求,从而避免请求组的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
-
代码:
//定义一个base处理者
public abstract class Handler {
protected Handler handler;
public void setHandler(Handler handler) {
this.handler = handler;
}
public abstract void handleRequest();
}
//定义处理者1
public class FirstHandler extends Handler {
@Override
public void handleRequest() {
if (true) {
doSomething();
} else if (Objects.nonNull(handler)) {
handler.handleRequest();
}
}
}
//定义处理者2
public class SecondHandler extends Handler {
@Override
public void handleRequest() {
if (true) {
doSomething();
} else if (Objects.nonNull(handler)) {
handler.handleRequest();
}
}
}
//定义处理者3
public class ThirdHandler extends Handler {
@Override
public void handleRequest() {
if (true) {
doSomething();
} else if (Objects.nonNull(handler)) {
handler.handleRequest();
}
}
}
//入口处理方法
public void method(){
//定义责任链条
Handler firstHandler = new FirstHandler();
Handler secondHandler = new SecondHandler();
Handler thirdHandler = new ThirdHandler();
firstHandler.setHandler(secondHandler);
secondHandler.setHandler(thirdHandler);
//传递任务
firstHandler.handleRequest();
}
- 通过上述代码,可以看出,定义了责任链条之后,那么就会给满足条件的handler处理请求。