关于代码设计的一点问题(责任链模式)

发布于 2022-09-13 01:05:45 字数 436 浏览 45 评论 0

最近学习了责任链模式,大致知道了责任链模式可以用于处理流程,比如早上起来先穿衣服然后洗漱然后吃饭然后上班。责任链模式可以通过一系列的请求处理者将这个流程串起来,实现请求发送者和请求处理者之间的松耦合,以链式调用的方法对请求对象进行处理。

但是现在有一个场景是实现白名单的维护,其整体的结构大致可以抽象成,数据准备-检验-白名单数据处理。看似是一个链式的调用,符合责任链模式,但是其实和责任链不同,这三个流程一定是都需要的,而非和责任链一样可以自由选择是否处理此请求或者传递请求。其次,这个流程似乎划分的颗粒度比较大,拿检验来说,里面有不少的if/else判断,所以看起来更想是组合模式

根据不同情况获取数据准备a,检验b,白名单处理b组装成一个流程,然后链式调用

或者另一个情况下是数据准备b,检验a,白名单处理c组装成链式调用

刚刚工作不久,碰到这种代码设计问题拿不定主意,这种情况下应该如何设计才合理优雅呢

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

残疾 2022-09-20 01:05:45

有一个解决的设想,将责任链更加细化,比如检验方法,把里面的if/else逻辑拆分开,写成检验a 检验b检验c等等,将if/else逻辑放在客户端,组装责任链。优点是简化了请求处理器的功能,而且更加松耦合,缺点是复杂化了客户端,后期维护成本高,进一步的解决方案是利用策略模式组装责任链。

但是现在我更懵逼了,是不是有点小题大做,为了设计模式而设计模式,原来一个类就能处理的代码,可能拆分了十多个类,这合适吗

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文