加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 每个处理程序可以处理Chain of Responsibility Pattern

发布时间:2020-12-15 04:24:49 所属栏目:Java 来源:网络整理
导读:在这里,我不再重复提及责任链(CoR)模式定义.但是,我想知道的是,如果链中有一系列处理程序,并且所有处理程序都处理了请求,并且如果起始处理程序失败,则最后的处理程序将不处理请求,是否违反该模式? 我将用一个例子来解释.假设一个允许用户搜索书籍的在线应用
在这里,我不再重复提及责任链(CoR)模式定义.但是,我想知道的是,如果链中有一系列处理程序,并且所有处理程序都处理了请求,并且如果起始处理程序失败,则最后的处理程序将不处理请求,是否违反该模式?

我将用一个例子来解释.假设一个允许用户搜索书籍的在线应用程序.当用户提交请求时,系统会执行搜索并显示结果.假设,此功能以CoR模式实现.

第一个处理程序获取请求参数(书籍类别,价格,作者等),并添加其他参数(例如用户国家,地区,从请求中挑选的语言)并执行某些验证.
第二个处理程序获取第一个处理程序的输出并查看数据库并创建结果列表.这些结果将转移到第三个处理程序中.第三个处理程序将命令结果,过滤,更改语言.如果前面的处理程序中的任何一个失败,则以下处理程序将无法完成其工作.

CoR的使用是否违背其概念?或任何其他良好的模式?

解决方法

责任链通常只有一个处理程序来处理请求.

一个很好的类比是从1970年代的Classic Tootsie Roll Commercial – “How Many Licks”年,一个男孩(请求)试图得到“到达Tootsie Pop中心需要多少舔?”的问题的答案.

他去了第一只动物,他不知道答案,但是谁将他送到了下一只动物,等等.最后,“请求”被处理,男孩得到答案.

男孩只知道链的起点(所有其他动物参考都按顺序给出).

在您的问题中,似乎您有一个定义良好的(静态)处理顺序.除非你需要动态地交换步骤,或者在其他项目中重复使用步骤,否则简单的模块化模式没有任何问题:它被称为简单的愚蠢 – KISS.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读