Bendi新闻
>
如何在业务代码中优雅地使用责任链模式
如何在业务代码中优雅地使用责任链模式
6月前
阿里妹导读
一、引言
1.有多个对象可以处理请求,但具体由哪个对象处理请求在运行时才能确定。
2.想要在不明确指定接收者的情况下,向多个对象中的一个提交请求。
二、责任链模式的定义
1. 定义
2. 类型
3. 实质
三、优雅之处
四、责任链模式适合应用场景
实现方式
是否自行处理这个请求。 是否将该请求沿着链进行传递。
链中可能只有单个链接。 部分请求可能无法到达链尾。 其他请求可能直到链尾都未被处理。
五、应用示例
六、实现步骤
循环责任链模式步骤
Request request = new Request(); // 创建请求对象
Processor[] processors = {new Processor1(), new Processor2(), new Processor3()};
for (Processor processor : processors) {
if (processor.canHandle(request)) {
processor.process(request);
break; // 处理请求并结束循环
}
}
请假场景步骤
public interface LeaveRequestProcessor {
void processLeaveRequest(LeaveRequest request);
}
1.TeamLeaderProcessor(项目小组长处理器):
public class TeamLeaderProcessor implements LeaveRequestProcessor {
public void processLeaveRequest(LeaveRequest request) {
if (request.getDays() <= 3) {
// 处理请假请求
System.out.println("项目小组长批准了请假申请,天数为:" + request.getDays() + "天");
} else {
System.out.println("项目小组长无法处理该请假申请");
}
}
}
2.DepartmentManagerProcessor(部门经理处理器):
public class DepartmentManagerProcessor implements LeaveRequestProcessor {
public void processLeaveRequest(LeaveRequest request) {
if (request.getDays() > 3 && request.getDays() <= 5) {
// 处理请假请求
System.out.println("部门经理批准了请假申请,天数为:" + request.getDays() + "天");
} else {
System.out.println("部门经理无法处理该请假申请");
}
}
}
3.CEOProcessor(总经理处理器):
public class CEOProcessor implements LeaveRequestProcessor {
public void processLeaveRequest(LeaveRequest request) {
if (request.getDays() > 5 && request.getDays() <= 7) {
// 处理请假请求
System.out.println("总经理批准了请假申请,天数为:" + request.getDays() + "天");
} else {
System.out.println("总经理无法处理该请假申请");
}
}
}
然后,创建一个处理器列表,并使用for循环遍历处理器列表来处理请假请求:
List<LeaveRequestProcessor> processors = new ArrayList<>();
processors.add(new TeamLeaderProcessor());
processors.add(new DepartmentManagerProcessor());
processors.add(new CEOProcessor());
// 创建请假请求
LeaveRequest request = new LeaveRequest("John", 5);
for (LeaveRequestProcessor processor : processors) {
processor.processLeaveRequest(request);
}
在上述代码中,我们创建了一个处理器列表,并依次添加了项目小组长(Team Leader Processor)、部门经理(Department Manager Processor)和总经理(CEO Processor)这三个具体处理者。然后,我们使用for循环遍历处理器列表,并依次调用每个处理器的process Leave Request方法来处理请假请求。
责任链的使用:https://juejin.cn/post/7273028474981335081
微信扫码关注该文公众号作者
来源:阿里云开发者
相关新闻
Rust 1.80 提供 Lazy Statics 稳定支持,并支持在模式匹配中使用开区间在Linux中,如何在Linux中使用Ansible进行自动化部署?在心理咨询中如何有效使用催眠?| 临床催眠应用新课上线如何优雅的将设计模式运用到实际项目中去?开源框架中的责任链模式实践Burning Man生存指南:如何优雅地解决生理需求外出吃饭 如何优雅地和朋友AA?华女写书传授餐厅礼仪如何优雅地跟亲戚介绍留子野鸡大学?如何优雅地实现接口统一调用如何在文书中突出申请优势?“负面”体验能写吗?|「助力营」正在答疑中当热搜被奥运承包,品牌如何在焦点中做文章? | 中国案例如何在爱情中主动出击我们是如何在 IDE 中设计 AutoDev 的 AI 编程开发智能体语言与框架?小说里的名场面要如何在剧本中呈现?从替代到超越,中国制造企业如何在博弈中突围?|【经纬创融汇(常州站)】GPT、Etsy又在大面积封号!在国内如何使用美国电话?一招搞定硅谷大佬们如何在美国大选中站队?揭秘Memecoin投资:如何在加密市场中大赚一笔音乐治疗≠听音乐,音乐如何在咨询室中发挥效力?|音乐治疗明天开课如何优雅的实现在线人数统计功能?如何负责任地使用人工智能如何在Initialview面试中展示真实性才能让招生官对你青睐有加?视觉特征在语言空间中如何分布?武大、上海交大提出统一多模态自回归建模框架如何在 AI 浪潮中屹立不倒:来自企业的组织弹性实践