关于代码设计的一点问题(责任链模式)
最近学习了责任链模式,大致知道了责任链模式可以用于处理流程,比如早上起来先穿衣服然后洗漱然后吃饭然后上班。责任链模式可以通过一系列的请求处理者将这个流程串起来,实现请求发送者和请求处理者之间的松耦合,以链式调用的方法对请求对象进行处理。
但是现在有一个场景是实现白名单的维护,其整体的结构大致可以抽象成,数据准备-检验-白名单数据处理。看似是一个链式的调用,符合责任链模式,但是其实和责任链不同,这三个流程一定是都需要的,而非和责任链一样可以自由选择是否处理此请求或者传递请求。其次,这个流程似乎划分的颗粒度比较大,拿检验来说,里面有不少的if/else判断,所以看起来更想是组合模式
根据不同情况获取数据准备a,检验b,白名单处理b组装成一个流程,然后链式调用
或者另一个情况下是数据准备b,检验a,白名单处理c组装成链式调用
刚刚工作不久,碰到这种代码设计问题拿不定主意,这种情况下应该如何设计才合理优雅呢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
有一个解决的设想,将责任链更加细化,比如检验方法,把里面的if/else逻辑拆分开,写成检验a 检验b检验c等等,将if/else逻辑放在客户端,组装责任链。优点是简化了请求处理器的功能,而且更加松耦合,缺点是复杂化了客户端,后期维护成本高,进一步的解决方案是利用策略模式组装责任链。
但是现在我更懵逼了,是不是有点小题大做,为了设计模式而设计模式,原来一个类就能处理的代码,可能拆分了十多个类,这合适吗