设计模式-责任链模式

前言

Linus Benedict Torvalds : RTFSC – Read The Funning Source Code

概述

使多个对象都有机会处理请求,从而避免请求的发送这和接受者之间的耦合关系。将这些对象连成一条链,并沿着链传递请求直到处理为止。

优点:可以对请求者和处理者关系解耦。
缺点:对链中的处理者遍历会消耗性能。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public abstract class Handler {
protected Handler successor;
public abstract void handleRequest();
public Handler getSuccessor() {
return successor;
}
public void setSuccessor(Handler successor) {
this.successor = successor;
}
}
public class ConcreteHandler extends Handler {
@Override
public void handleRequest() {
if (getSuccessor() != null) {
System.out.println("放过请求");
getSuccessor().handleRequest();
} else {
System.out.println("处理请求");
}
}
}
public static void main(String[] args) {
//组装责任链
Handler handler1 = new ConcreteHandler();
Handler handler2 = new ConcreteHandler();
handler1.setSuccessor(handler2);
//提交请求
handler1.handleRequest();
}

设计模式 目录