gpt4 book ai didi

java - 让一个请求由责任链模式中的多个处理程序处理

转载 作者:行者123 更新时间:2023-12-01 20:21:23 25 4
gpt4 key购买 nike

我正在学习设计模式以在代码中实现它,我想我找到了一种我认为可行的设计模式,但有一个重大缺陷。

我最终采用的模式是责任链模式。据我了解,有一个请求传递给单个处理程序,该处理程序将处理该请求或将其沿着链传递。

我看到的唯一问题是它指定一旦处理程序之一处理请求,处理就会停止。我想要一些能够继续链式运行并为每个处理程序提供处理请求的机会的东西。

问题陈述

我正在创建一个应用程序,它将向一家公司发送发票,我想知道谁都看过发票并签字。我们需要确保每个部门都已签字,例如会计、财务等。重要的是方面是公正的原因 1 部门签署它不应该结束我认为发生在这种模式中的过程

这种模式完全有可能不适合我,如果是的话,您能建议我一种适合的模式吗?这不是一个类项目,这只是我学习使用模式并发现它在日常生活中的使用。

最佳答案

我不知道该将此作为答案还是评论,但是:

对我来说,听起来您更多地关注的是管道或池,而不是责任链。在链条中,驱动思想是链条中的每个链接都将处理数据或将其传递到下一个链接。然后,一旦链中的某个环节确实处理了数据,链就会结束。

在管道中,其想法是所有步骤至少都会查看数据,尽管它们实际上可能不会对给定的数据进行任何处理。通常隐含的理解是管道是“线性的”。

在您的情况下,这意味着一个部门需要在下一个部门签字之前签字。管道还意味着数据的状态可能会随着其移动而改变。

由于在您的示例中,听起来每个部门的批准都是独立的,因此您可以使用池。通常我们将池视为线程池,但从本质上讲,池可以被视为一组独立的进程,它们应用于相同的输入数据,每个进程的结果被收集并以某种形式的集合返回结果。

当然有一些考虑因素需要考虑:一旦任何部门拒绝请求,系统是否应该短路?是否存在复杂的业务逻辑在起作用,诸如 A 部门和 C 部门批准、B 部门否决以及 D 部门在截止日期之前未投票之类的情况是否是需要处理的理论状态?

这是我睡前在手机上写的,所以请原谅答案中的任何缺陷。我明天会回来查看它,并在需要时进行一些清理。

关于java - 让一个请求由责任链模式中的多个处理程序处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44620922/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com