Java 为什么我们应该使用责任链而不是简单的for循环?

Java 为什么我们应该使用责任链而不是简单的for循环?,java,Java,无论责任链模式完成了什么,都可以通过一个简单的for循环来完成。考虑本文中的钞票分配器示例。 我们可以使用for循环和if条件轻松实现。是n;COR模式只是使事情复杂化?这并不是说:这是我们唯一能做到的方法 但更多:嘿,看看这个疯狂的替代方法 对于一般的设计模式,我强烈建议您将其视为如何做某些事情的想法,而不是特定问题的解决方案 更像是。。。他们会教你一些有趣的方法来处理某些你以前可能没有考虑过的情况。所以,当你需要类似的东西时,你的大脑不会说“不,从来没有这样想过,让我一个人呆着吧”,而是建立

无论责任链模式完成了什么,都可以通过一个简单的for循环来完成。考虑本文中的钞票分配器示例。
我们可以使用for循环和if条件轻松实现。是n;COR模式只是使事情复杂化?

这并不是说:这是我们唯一能做到的方法

但更多:嘿,看看这个疯狂的替代方法

对于一般的设计模式,我强烈建议您将其视为如何做某些事情的想法,而不是特定问题的解决方案

更像是。。。他们会教你一些有趣的方法来处理某些你以前可能没有考虑过的情况。所以,当你需要类似的东西时,你的大脑不会说“不,从来没有这样想过,让我一个人呆着吧”,而是建立联系,否则可能不会

我从来没有见过有人这样说:“让我们使用XYZ设计模式来实现这一点!" 然而,当人们必须解释他们的代码时,我有时听到他们提到某些设计模式,这意味着他们不必解释他们思路中的特定部分,并且仍然被理解

比如“嗯,这有点像一种责任链模式,除了……”

所以,不要花太多时间去想为什么,用你的时间去探索和理解如何去做。不管怎样,谈论设计选择需要花费太多的时间。每件事都有利弊

最后,让我们来讨论一下为什么,尽管我不想这么做,但我会简短地说,我相信还有其他方面需要考虑。 (注意:当我说“链的一部分”时,我指的是在同一端点结束的较低部分。如a->B->C->D->E->F。我将谈论C->D->E->F或D->E->F,但不是关于B->C->D)

  • 如果您想切换出链的一部分,只需更改一个变量。在for中,将有大量的If可以删除、注释掉或放在其他地方,因为您不再需要它们。此外,您可以轻松地保留旧链,而不会使正在使用的代码混乱
  • 在不同的位置使用同一链的一部分非常容易。如果在循环中只使用部分If语句,但替换其他语句,则意味着您需要创建一个新循环,在该循环中复制仍然使用的部分。最好避免重复代码
  • 好吧……使用该链,测试和让多个开发人员同时处理不同的部分会更容易,但前提是循环非常简单。如果您开始调用方法来处理部分(理想情况下是从不同的类),那么在没有该模式的情况下也应该同样容易
  • 如果你遇到他们并告诉他们你使用了他们的模式,那么创建设计模式的人可能会赞许地向你点头
老实说,除了最后一点之外,其他的也可以通过以不同的方式构建围绕循环的代码来实现。再说一次,这正是使用这种设计模式所要做的;)