给我写一个demo,用于解释java责任链设计模式
时间: 2023-05-23 21:05:29 浏览: 120
A:
好的,让我们来写一个简单的demo来解释Java责任链设计模式。责任链是一种行为设计模式,它允许您创建一个由多个对象组成的链,每个对象都能够处理请求,如果一个对象不能处理请求,则会将它传递到下一个对象,直到找到能够处理该请求的对象。
我们来模拟一个简单的审批流程,假设我们有三个处理者:经理、部门主管和CEO,每个处理者都能够审批请求,但只有经理可以审批低于10000元的请求,部门主管可以审批低于50000元的请求,而CEO可以处理所有请求。
我们可以使用责任链模式来实现这个流程。
我们先来看 Handler 接口:
```
public interface Handler {
public void setNextHandler(Handler nextHandler);
public void processRequest(double amount);
}
```
我们定义了一个 Handler 接口,它包含两个方法:
- setNextHandler: 设置下一个处理者。
- processRequest: 处理请求。
接下来我们来实现具体的处理者类。
```
public class ManagerHandler implements Handler {
private Handler nextHandler;
@Override
public void setNextHandler(Handler nextHandler) {
this.nextHandler = nextHandler;
}
@Override
public void processRequest(double amount) {
if (amount < 10000) {
System.out.println("经理审批通过");
} else {
nextHandler.processRequest(amount);
}
}
}
public class DirectorHandler implements Handler {
private Handler nextHandler;
@Override
public void setNextHandler(Handler nextHandler) {
this.nextHandler = nextHandler;
}
@Override
public void processRequest(double amount) {
if (amount < 50000) {
System.out.println("部门主管审批通过");
} else {
nextHandler.processRequest(amount);
}
}
}
public class CEOHandler implements Handler {
private Handler nextHandler;
@Override
public void setNextHandler(Handler nextHandler) {
this.nextHandler = nextHandler;
}
@Override
public void processRequest(double amount) {
System.out.println("CEO审批通过");
}
}
```
我们实现了三个处理者类: ManagerHandler、DirectorHandler和CEOHandler。
它们都实现 Handler 接口,并且覆写了 setNextHandler 和 processRequest 方法。
假设我们要处理一个申请金额且金额为 60000 元,我们可以通过以下方式构建责任链:
```
Handler managerHandler = new ManagerHandler();
Handler directorHandler = new DirectorHandler();
Handler ceoHandler = new CEOHandler();
managerHandler.setNextHandler(directorHandler);
directorHandler.setNextHandler(ceoHandler);
managerHandler.processRequest(60000);
```
以上代码中,我们首先创建了三个处理者,然后使用 setNextHandler 方法构建了责任链。
最后,我们调用 managerHandler 的 processRequest 方法,并将申请金额传递给该方法,它将首先检查该金额是否小于10000,如果是,则将请求处理,否则将请求传递到下一个处理者(即 directorHandler)。
如果 directorHandler 不能处理请求,它将请求传递给 ceoHandler,最终 CEOHandler 将处理该请求。
这就是责任链模式的基本思想。它允许我们将请求发送到链的顶部,并从顶部开始逐个测试处理者,直到我们找到能够处理请求的处理者。
希望这个demo可以帮助你理解Java中的责任链设计模式。
阅读全文