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

java – 责任链:循环还是下一步?

发布时间:2020-12-14 16:23:20 所属栏目:Java 来源:网络整理
导读:我正在实行一连串责任模式. 我有不同的策略可以组合在一个列表中,我有一个处理器来处理策略列表.每个策略都可以处理CustomInput,并且可以选择是否还应该处理其他策略. interface Policy { public boolean process(CustomInput input); }interface Processor
我正在实行一连串责任模式.

我有不同的策略可以组合在一个列表中,我有一个处理器来处理策略列表.每个策略都可以处理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.你不必放入很多丑陋的检查代码,看看你什么时候到达终点站,因为谁处理它,通过不调用其继任者,将提示完成的项目的返回.

(编辑:李大同)

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

    推荐文章
      热点阅读