用java写责任链设计模式
时间: 2023-08-11 09:02:30 浏览: 59
当然可以!下面是一个使用 Java 编写的责任链设计模式的示例代码:
```java
// 定义抽象处理器类
abstract class Handler {
protected Handler successor;
public void setSuccessor(Handler successor) {
this.successor = successor;
}
public abstract void handleRequest(String request);
}
// 具体处理器类A
class ConcreteHandlerA extends Handler {
public void handleRequest(String request) {
if (request.equals("A")) {
System.out.println("ConcreteHandlerA处理了请求");
} else if (successor != null) {
successor.handleRequest(request);
}
}
}
// 具体处理器类B
class ConcreteHandlerB extends Handler {
public void handleRequest(String request) {
if (request.equals("B")) {
System.out.println("ConcreteHandlerB处理了请求");
} else if (successor != null) {
successor.handleRequest(request);
}
}
}
// 具体处理器类C
class ConcreteHandlerC extends Handler {
public void handleRequest(String request) {
if (request.equals("C")) {
System.out.println("ConcreteHandlerC处理了请求");
} else if (successor != null) {
successor.handleRequest(request);
}
}
}
// 客户端代码
public class Client {
public static void main(String[] args) {
// 创建处理器对象
Handler handlerA = new ConcreteHandlerA();
Handler handlerB = new ConcreteHandlerB();
Handler handlerC = new ConcreteHandlerC();
// 设置处理器之间的关系
handlerA.setSuccessor(handlerB);
handlerB.setSuccessor(handlerC);
// 发送请求
handlerA.handleRequest("B");
}
}
```
在上述代码中,我们定义了抽象处理器类 `Handler`,它有一个 `setSuccessor` 方法用于设置下一个处理器,并且有一个抽象方法 `handleRequest` 用于处理请求。然后我们定义了具体的处理器类 `ConcreteHandlerA`、`ConcreteHandlerB` 和 `ConcreteHandlerC`,它们分别继承了抽象处理器类,并实现了 `handleRequest` 方法。在客户端代码中,我们创建了处理器对象并设置它们之间的关系,然后通过调用第一个处理器对象的 `handleRequest` 方法来发送请求,请求会依次被每个处理器处理或传递给下一个处理器。
这就是一个使用 Java 编写的责任链设计模式的示例代码。根据实际需求,你可以根据这个示例进行扩展和修改。