java责任链模式实现
时间: 2023-07-07 12:24:52 浏览: 87
java 责任链模式
4星 · 用户满意度95%
责任链模式是一种行为型设计模式,它允许你将请求沿着处理者链进行发送,直到其中一个处理者成功地处理该请求。在 Java 中,可以使用以下步骤来实现责任链模式:
1. 定义一个抽象类或接口来表示处理者。该类或接口应该至少定义一个处理请求的方法。
```java
public abstract class Handler {
protected Handler successor;
public void setSuccessor(Handler successor) {
this.successor = successor;
}
public abstract void handleRequest(Request request);
}
```
2. 实现具体的处理者类,这些类应该扩展抽象类或实现接口,并覆盖处理请求的方法。如果无法处理请求,则应该将请求传递给下一个处理者。
```java
public class ConcreteHandler1 extends Handler {
@Override
public void handleRequest(Request request) {
if (request.getType() == RequestType.TYPE1) {
System.out.println(request.getName() + " is handled by ConcreteHandler1");
} else if (successor != null) {
successor.handleRequest(request);
}
}
}
public class ConcreteHandler2 extends Handler {
@Override
public void handleRequest(Request request) {
if (request.getType() == RequestType.TYPE2) {
System.out.println(request.getName() + " is handled by ConcreteHandler2");
} else if (successor != null) {
successor.handleRequest(request);
}
}
}
```
3. 定义请求类,包含请求的类型和名称。
```java
public class Request {
private RequestType type;
private String name;
public Request(RequestType type, String name) {
this.type = type;
this.name = name;
}
public RequestType getType() {
return type;
}
public String getName() {
return name;
}
}
```
4. 创建责任链并将处理者链接在一起。
```java
public class ChainDemo {
public static void main(String[] args) {
Handler h1 = new ConcreteHandler1();
Handler h2 = new ConcreteHandler2();
h1.setSuccessor(h2);
h1.handleRequest(new Request(RequestType.TYPE1, "request1"));
h1.handleRequest(new Request(RequestType.TYPE2, "request2"));
}
}
```
在上面的示例中,我们首先创建了两个具体的处理者类,然后将它们链接在一起创建了一个责任链。最后,我们使用责任链处理两个请求。当请求的类型为 TYPE1 时,将被 ConcreteHandler1 处理;当请求的类型为 TYPE2 时,将被 ConcreteHandler2 处理。如果没有处理器能够处理该请求,则不会执行任何操作。
阅读全文