责任链模式

模式定义

为请求创建了一个接收者对象的链。

image-20230427220149503

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
public class ChainOfResponsibility {
public static void main(String[] args) {

AbstractHandler handler1 = new ConcreteHandler1();
AbstractHandler handler2 = new ConcreteHandler2();

handler1.setNext(handler2);
handler1.handleRequest("login");


}
}
abstract class AbstractHandler {

protected AbstractHandler next;

public void setNext(AbstractHandler next) {
this.next = next;
}

public AbstractHandler getNext() {
return next;
}


abstract void handleRequest(String request);
}



class ConcreteHandler1 extends AbstractHandler{

@Override
void handleRequest(String request) {

if (!request.equals("login")){
System.out.println("请登陆后再尝试");
return;
}
this.next.handleRequest(request);
}
}

class ConcreteHandler2 extends AbstractHandler{

@Override
void handleRequest(String request) {
if (!request.equals("update")){
System.out.println("请确认后更新");
return;
}
this.next.handleRequest(request);
}
}

应用场景

一个请求的处理需要多个对象挡住的一个活几个协作处理。

优点

1.亲戚呀的发送者和接受者结偶

2.可以控制执行顺序

3.符合开闭原则和单一职责原则

经典案例:

1
2
javax.servlet.Fillter
javax.servlet.FilterChain