Android编程:深入理解责任链模式
67 浏览量
更新于2024-08-29
收藏 94KB PDF 举报
"Android编程设计模式之责任链模式详解"
责任链模式是一种行为设计模式,它的主要作用是解耦请求的发送者和处理者之间的关系。在这个模式中,多个对象可以形成一个链条,每个对象(节点)都有能力处理请求,或者将请求传递给链中的下一个对象。如果某个对象不能处理请求,请求就会沿着链继续传递,直到找到能够处理的节点为止。
在Android开发中,责任链模式常常用于事件处理和回调机制。例如,当用户在应用中触发一个操作,如点击按钮,这个操作会作为一个请求沿处理链传递,由多个对象(可能是不同的组件或服务)有机会处理。这种模式提供了很大的灵活性,因为可以在运行时动态改变处理顺序,添加或移除处理节点。
核心概念
1. Handler(抽象处理者角色):定义一个处理请求的接口,通常包含一个处理方法和一个指向下一个处理者的引用。这样,处理者既可以处理请求,也可以将请求传递给链中的下一个对象。
2. ConcreteHandler(具体处理者角色):实现了Handler接口,具体实现对请求的处理逻辑。每个ConcreteHandler都有自己的处理范围,如果请求在其处理范围内,则进行处理;否则,将请求传递给nextHandler。
使用场景
1. 多级审批流程:在Android应用中,比如模拟公司的报销审批流程,员工的报销申请会逐级向上提交,每个级别的领导(具体处理者)根据其权限范围决定是否批准,如果超出权限则传递给上一级。
2. 消息分发系统:在消息传递应用中,消息可能需要经过多个处理器,如过滤器、解析器等,直到被合适的目标接收。
简单实现
下面是一个简单的Java代码示例,展示了如何创建一个处理报销请求的责任链:
```java
public abstract class Leader {
protected Leader nextHandler;
public void setNextHandler(Leader handler) { this.nextHandler = handler; }
public final void handleRequest(int money) {
if (money <= limit()) {
handle(money);
} else if (nextHandler != null) {
nextHandler.handleRequest(money);
}
}
protected abstract int limit();
protected abstract void handle(int money);
}
public class Director extends Leader {
@Override
protected int limit() { return 5000; }
@Override
protected void handle(int money) { System.out.println("Director approved $" + money); }
}
public class Manager extends Leader {
@Override
protected int limit() { return 10000; }
@Override
protected void handle(int money) { System.out.println("Manager approved $" + money); }
}
public class CEO extends Leader {
@Override
protected int limit() { return Integer.MAX_VALUE; }
@Override
protected void handle(int money) { System.out.println("CEO approved $" + money); }
}
// 初始化责任链
Director director = new Director();
Manager manager = new Manager();
CEO ceo = new CEO();
director.setNextHandler(manager);
manager.setNextHandler(ceo);
// 提交报销请求
director.handleRequest(6000); // 输出:Director approved $6000
```
在这个例子中,`Director`、`Manager`和`CEO`分别代表不同级别的领导,他们都有`handleRequest`方法来处理报销请求。如果请求的金额在当前领导的权限范围内,就由该领导处理;否则,请求会被传递给下一级领导。
通过这种方式,责任链模式使得请求处理过程变得灵活且可扩展,可以根据需要添加新的处理者,或者调整处理顺序,而不会影响到请求的发送者。在Android开发中,利用责任链模式可以构建高效、可维护的代码结构,提高代码的复用性和灵活性。
130 浏览量
121 浏览量
110 浏览量
154 浏览量
144 浏览量
135 浏览量
172 浏览量
125 浏览量
102 浏览量
weixin_38655496
- 粉丝: 5
- 资源: 932
最新资源
- CropperView:使用 CropperView 矩形
- GoogleMaterialDesignTest:测试以开始使用Google Material Design
- Geeks Fest - New Tab Gaming News-crx插件
- wiztree,树查看文件大小
- helloworldnodejs
- 猫鼬-酸:猫鼬交易助手
- 纯js手风琴
- puppy_express_app
- FPGA逻辑实现CORDIC算法的COS值和平方根值计算。
- Notifier for Feedly:trade_mark:-crx插件
- Speaker-Recognition-System:EEC 201最终项目
- ember-cinephile
- qGrid:解释图式查询的语言
- SDG-Drupal-Website-Code
- 基于Vue3实现简单的mini-vue之实现reactive
- ImageEditor.zip