责任链模式代码java
时间: 2024-01-02 12:55:55 浏览: 36
当然,我可以为您提供一个简单的责任链模式的 Java 代码示例:
首先,我们定义一个处理请求的抽象处理器(Handler)类:
```java
public abstract class Handler {
protected Handler successor;
public void setSuccessor(Handler successor) {
this.successor = successor;
}
public abstract void handleRequest(Request request);
}
```
然后,我们可以创建具体的处理器类,继承自抽象处理器类:
```java
public class ConcreteHandler1 extends Handler {
public void handleRequest(Request request) {
if (request.getLevel() <= 1) {
System.out.println("ConcreteHandler1 处理了请求:" + request.getContent());
} else if (successor != null) {
successor.handleRequest(request);
}
}
}
public class ConcreteHandler2 extends Handler {
public void handleRequest(Request request) {
if (request.getLevel() <= 2) {
System.out.println("ConcreteHandler2 处理了请求:" + request.getContent());
} else if (successor != null) {
successor.handleRequest(request);
}
}
}
public class ConcreteHandler3 extends Handler {
public void handleRequest(Request request) {
if (request.getLevel() <= 3) {
System.out.println("ConcreteHandler3 处理了请求:" + request.getContent());
} else {
System.out.println("无法处理该请求:" + request.getContent());
}
}
}
```
接下来,我们定义一个请求类:
```java
public class Request {
private int level;
private String content;
public Request(int level, String content) {
this.level = level;
this.content = content;
}
public int getLevel() {
return level;
}
public String getContent() {
return content;
}
}
```
最后,我们可以创建一个责任链,并使用它处理请求:
```java
public class Client {
public static void main(String[] args) {
Handler handler1 = new ConcreteHandler1();
Handler handler2 = new ConcreteHandler2();
Handler handler3 = new ConcreteHandler3();
handler1.setSuccessor(handler2);
handler2.setSuccessor(handler3);
Request request1 = new Request(1, "请求 1");
Request request2 = new Request(2, "请求 2");
Request request3 = new Request(3, "请求 3");
Request request4 = new Request(4, "请求 4");
handler1.handleRequest(request1);
handler1.handleRequest(request2);
handler1.handleRequest(request3);
handler1.handleRequest(request4);
}
}
```
这是一个简单的责任链模式的示例代码,通过运行 `Client` 类可以看到不同处理器对请求的处理情况。希望对您有帮助!
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)