责任链设计模式 java
时间: 2023-11-04 22:06:47 浏览: 100
责任链设计模式是一种行为型设计模式,它允许多个对象来处理请求,形成一个处理链。每个对象在接收到请求后,可以选择处理请求或者将请求传递给下一个对象。这样的设计模式可以避免请求发送者与接收者之间的耦合关系,提高程序的灵活性。
在Java中,可以使用以下步骤实现责任链设计模式:
1. 创建一个抽象处理器(Handler)类,其中包含一个指向下一个处理器的引用和一个处理请求的方法。
2. 创建具体的处理器类,继承抽象处理器类,并实现处理请求的方法。在方法中判断是否能够处理请求,若可以则进行处理,若不可以则将请求传递给下一个处理器。
3. 在客户端中创建处理器对象,并设置处理器的处理顺序。
4. 将请求发送给第一个处理器,责任链将自动传递请求给合适的处理器进行处理。
示例代码如下所示:
```java
// 抽象处理器类
public abstract class Handler {
protected Handler nextHandler;
public void setNextHandler(Handler nextHandler) {
this.nextHandler = nextHandler;
}
public abstract void handleRequest(Request request);
}
// 具体处理器类
public class ConcreteHandlerA extends Handler {
@Override
public void handleRequest(Request request) {
if (request.getType().equals("A")) {
System.out.println("ConcreteHandlerA 处理请求");
} else if (nextHandler != null) {
nextHandler.handleRequest(request);
}
}
}
public class ConcreteHandlerB extends Handler {
@Override
public void handleRequest(Request request) {
if (request.getType().equals("B")) {
System.out.println("ConcreteHandlerB 处理请求");
} else if (nextHandler != null) {
nextHandler.handleRequest(request);
}
}
}
// 请求类
public class Request {
private String type;
public Request(String type) {
this.type = type;
}
public String getType() {
return type;
}
}
// 客户端
public class Client {
public static void main(String[] args) {
// 创建处理器对象
Handler handlerA = new ConcreteHandlerA();
Handler handlerB = new ConcreteHandlerB();
// 设置处理器的处理顺序
handlerA.setNextHandler(handlerB);
// 创建请求
Request request1 = new Request("A");
Request request2 = new Request("B");
Request request3 = new Request("C");
// 发送请求
handlerA.handleRequest(request1);
handlerA.handleRequest(request2);
handlerA.handleRequest(request3);
}
}
```
输出结果为:
```
ConcreteHandlerA 处理请求
ConcreteHandlerB 处理请求
```
阅读全文