java – 每个处理程序可以处理Chain of Responsibility Pattern
在这里,我不再重复提及责任链(CoR)模式定义.但是,我想知道的是,如果链中有一系列处理程序,并且所有处理程序都处理了请求,并且如果起始处理程序失败,则最后的处理程序将不处理请求,是否违反该模式?
我将用一个例子来解释.假设一个允许用户搜索书籍的在线应用程序.当用户提交请求时,系统会执行搜索并显示结果.假设,此功能以CoR模式实现. 第一个处理程序获取请求参数(书籍类别,价格,作者等),并添加其他参数(例如用户国家,地区,从请求中挑选的语言)并执行某些验证. CoR的使用是否违背其概念?或任何其他良好的模式? 解决方法
责任链通常只有一个处理程序来处理请求.
一个很好的类比是从1970年代的Classic Tootsie Roll Commercial – “How Many Licks”年,一个男孩(请求)试图得到“到达Tootsie Pop中心需要多少舔?”的问题的答案. 他去了第一只动物,他不知道答案,但是谁将他送到了下一只动物,等等.最后,“请求”被处理,男孩得到答案. 男孩只知道链的起点(所有其他动物参考都按顺序给出). 在您的问题中,似乎您有一个定义良好的(静态)处理顺序.除非你需要动态地交换步骤,或者在其他项目中重复使用步骤,否则简单的模块化模式没有任何问题:它被称为简单的愚蠢 – KISS. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |