java 责任链模式
时间: 2023-11-10 08:04:18 浏览: 50
Java责任链模式是一种行为设计模式,它允许你将请求沿着处理者链进行发送,直到其中一个处理者对其进行处理。在责任链模式中,每个处理者都可以决定是否将请求传递给下一个处理者,以及何时停止传递。
在Java中,责任链模式通常由一个抽象处理者类和多个具体处理者类组成。每个具体处理者类都实现了抽象处理者类,并且在处理请求时可以选择将其传递给下一个处理者或停止传递。
以下是一个简单的Java责任链模式示例:
```java
public abstract class Handler {
protected Handler successor;
public void setSuccessor(Handler successor) {
this.successor = successor;
}
public abstract void handleRequest(Request request);}
public class ConcreteHandler1 extends Handler {
public void handleRequest(Request request) {
if (request.getLevel() <= 1) {
System.out.println("ConcreteHandler1 handled the request.");
} 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 handled the request.");
} else if (successor != null) {
successor.handleRequest(request);
}
}
}
public class Request {
private int level;
public Request(int level) {
this.level = level;
}
public int getLevel() {
return level;
}
}
public class Client {
public static void main(String[] args) {
Handler handler1 = new ConcreteHandler1();
Handler handler2 = new ConcreteHandler2();
handler1.setSuccessor(handler2);
Request request1 = new Request(1);
handler1.handleRequest(request1);
Request request2 = new Request(2);
handler1.handleRequest(request2);
Request request3 = new Request(3);
handler1.handleRequest(request3);
}
}
```
在上面的示例中,我们定义了一个抽象处理者类Handler和两个具体处理者类ConcreteHandler1和ConcreteHandler2。每个处理者都可以处理请求,或将其传递给下一个处理者。我们还定义了一个Request类,它包含请求的级别。
在客户端代码中,我们创建了两个处理者对象,并将它们链接在一起形成一个处理者链。然后,我们创建了三个请求对象,并将它们发送到处理者链中进行处理。