设计模式之责任链模式!

解除请求的发送者和接收者之间耦合,而使多个对象都有机会处理这个请求。

将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它。

UML类图:

img

抽象接口RequestHandler:

1
2
3
4
public interface RequestHandler {

void doHandler(String req);
}

抽象类BaseRequestHandler

1
2
3
4
5
6
7
8
public abstract class BaseRequestHandler implements RequestHandler {

protected RequestHandler next;

public void next(RequestHandler next) {
this.next = next;
}
}

具体处理类AHandler:

1
2
3
4
5
6
7
8
9
10
11
12
public class AHandler extends BaseRequestHandler {

@Override
public void doHandler(String req) {
// 处理自己的业务逻辑
System.out.println("A中处理自己的逻辑");
// 传递给下个类(若链路中还有下个处理类)
if (next != null) {
next.doHandler(req);
}
}
}

使用类Client

1
2
3
4
5
6
7
8
9
10
public class Client {
public static void main(String[] args) {
BaseRequestHandler a = new AHandler();
BaseRequestHandler b = new BHandler();
BaseRequestHandler c = new CHandler();
a.next(b);
b.next(c);
a.doHandler("链路待处理的数据");
}
}