责任链模式是一种行为设计模式,允许你将请求沿着处理链发送,然后处理者都可对其进行处理,完成后可以再将其传递给下一个处理者。下面将会举例说明什么是责任链模式,责任链模式该如何使用
1.什么是责任链模式
当一个请求可能需要多个对象中的某个进行处理时,将这些对象连成一条链,并沿者这条链传递该请求,知道有一个对象处理它为止。这样的情况或需求时,可以采用责任链模式。
2.如何实现
1)处理者接口(Handler),负责定义处理请求的抽象方法,并设置下一个处理着的方法。
2)具体处理者,实现Handler接口中定义的方法。实现处理用户请求的逻辑,并设置下一个处理请求的对象。如果能够处理用户求情就处理,如果不能处理,交给下一个对象进行处理。
3)封装类。对以上的具体处理者进行封装,使它们形成一个处理链条。
3.代码实现
以一个资金审批举例
1)处理者接口
/**
* 处理者接口
* 定义处理请求的方法
* 设置下一个处理者
*/
public interface Handler {
public void handleRequest(int money);
public void setNextHandler(Handler handler);
}
2)处理者1
/**
* 具体处理者--经理
*/
public class Manager implements Handler {
Handler handler;
@Override
public boolean handleRequest(int money) {
boolean result = false;
if(money<1000){
System.out.println("同意");
result = true;
}else{
//超出处理范围,交给下一个处理着
if(handler!=null){
result = handler.handleRequest(money);
}
}
return result;
}
@Override
public void setNextHandler(Handler handler) {
this.handler = handler;
}
}
3)处理着2
/**
* 具体处理者--总经理
*/
public class GeneralManager implements Handler {
Handler handler;
@Override
public boolean handleRequest(int money) {
boolean result = false;
if(money<10000){
System.out.println("同意");
result = true;
}else{
//超出处理范围,交给下一个处理着
if(handler!=null){
result = handler.handleRequest(money);
}
}
return result;
}
@Override
public void setNextHandler(Handler handler) {
this.handler = handler;
}
}
4)封装类
/**
* 封装类
* 将所有的具体处理者封装成一条处理链
*/
public class Contxt {
private Handler handler1,handler2;
public Contxt(){
}
public void createHandlerChain(){
handler1 = new Manager();
handler2 = new GeneralManager();
handler1.setNextHandler(handler2);
}
public void responseRequest(int request){
handler1.handleRequest(request);
}
}
5)测试类
public class TestMain {
public static void main(String args []){
int meney = 500;
Contxt context = new Contxt();
//创建处理链
context.createHandlerChain();
//相应请求
boolean result = context.responseRequest(meney);
System.out.println(result);
}
}
4.总结
责任链模式的优点
1)责任链中的对象只和自己的后继是低耦合关系,和其他对象毫无关联,是程序更加的灵活。
2)程序可以动态的增加、删除处理者的关系,或重新委派新的处理者
到此这篇关于Java实现设计模式之责任链模式的文章就介绍到这了,更多相关Java责任链模式内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
本文标题为:Java实现设计模式之责任链模式
基础教程推荐
- FirebaseListAdapter 不推送聊天应用程序的单个项目 - Firebase-Ui 3.1 2022-01-01
- “未找到匹配项"使用 matcher 的 group 方法时 2022-01-01
- 设置 bean 时出现 Nullpointerexception 2022-01-01
- Java Keytool 导入证书后出错,"keytool error: java.io.FileNotFoundException &拒绝访问" 2022-01-01
- 减少 JVM 暂停时间 >1 秒使用 UseConcMarkSweepGC 2022-01-01
- 无法使用修饰符“public final"访问 java.util.Ha 2022-01-01
- Java:带有char数组的println给出乱码 2022-01-01
- 在 Libgdx 中处理屏幕的正确方法 2022-01-01
- 降序排序:Java Map 2022-01-01
- 如何使用 Java 创建 X509 证书? 2022-01-01