java – 责任链:循环还是下一步?
我正在实行一连串责任模式.
我有不同的策略可以组合在一个列表中,我有一个处理器来处理策略列表.每个策略都可以处理CustomInput,并且可以选择是否还应该处理其他策略. interface Policy { public boolean process(CustomInput input); } interface Processor { public void process(List<Policy> policies,CustomInput input) } 我将实施处理器循环遍历政策列表,并检查每个策略的布尔值结果,以了解是否继续执行其他策略. 我的同事建议通过下一个策略到每个策略,让他们调用(或不)下一个(例如FilterChain). 我的问题如下: 在第二个解决方案中没有看到任何好处(通过下一个策略到当前处理的方案),循环遍历每个策略并检查它的结果? 解决方法
通过下一个的想法对我来说是没有意义的.所以我想要一个链:
A - B - C - D C如何知道D?如果它在C的代码中,则对链的任何更改将是一个巨大的麻烦来实现. 链条需要遵循已经存在的一些其他路径,例如响应者在他们只是向每个父母(“四人帮”的例子中)提出帮助请求时做的,或者您需要构建链,这就是为什么在Go4部分的底部,他们提到复合模式是一个自然而然的共犯. 请注意,做责任链的主要原因之一是可能对该项目操作的类型不同.这使得用Java中的接口实现它完美. 回答你的主要问题:在这种情况下使用责任链的好处是两个方面:1.你没有做出一个神对象,知道可能发生的一切事情来实现目标(成功建立一个政策),以及2.你不必放入很多丑陋的检查代码,看看你什么时候到达终点站,因为谁处理它,通过不调用其继任者,将提示完成的项目的返回. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |