责任链模式
一. 责任链模式
1.1 定义
- 在责任链模式中,许多对象由每个对象及其对下家的引用而连接起来形成一条链.请求在这个链上传递,知道其中的某一个对象决定处理此请求.
1.2 角色
- 抽象处理者角色(Handler).
- 具体处理者角色(ConcertHandler).
1.3 纯与不纯
- 纯的责任链模式:要么处理,要么让下家处理,而不能处理了一部分在交由下家处理.
- 不纯的责任链模式:请求最终可不被任何对象处理.
二. 具体实现
2.1 创建抽象处理者角色
public abstract class Handler {
protected Handler nextHandler = null;
public abstract void handle();
public Handler getNextHandler() {
return nextHandler;
}
public void setNextHandler(Handler nextHandler) {
this.nextHandler = nextHandler;
}
}
2.2 创建具体处理者角色
public class HandlerA extends Handler{
@Override
public void handle() {
if(nextHandler == null){
System.out.println("HandlerA handle ...");
}else{
nextHandler.handle();
}
}
}
public class HandlerB extends Handler{
@Override
public void handle() {
if(nextHandler == null){
System.out.println("HandlerB handle ...");
}else{
nextHandler.handle();
}
}
}
2.3 调用
public static void main(String[] args) {
Handler handlerA = new HandlerA();
Handler handlerB = new HandlerB();
handlerA.setNextHandler(handlerB);
handlerA.handle();
}
2.4 输出
HandlerB handle ...
三. 优缺点
3.1 优点
- 降低耦合度.
- 简化对象.
- 增强对象指派职责的灵活性.
3.2 缺点
- 请求不一定接受.
- 对性能有影响.
四. 源码
https://github.com/Seasons20/DisignPattern.git
END