使用责任链模式实现一个符合开闭原则的判断流程

本文介绍了如何利用责任链模式遵循开闭原则,解决在项目中不断变化的判断条件问题。通过创建一个处理请求的链,使得添加或移除判断条件时无需修改原有代码,降低了耦合性并提高了代码的可维护性。文章展示了如何定义抽象处理类及具体实现,最终完成动态判断流程的示例。
摘要由CSDN通过智能技术生成

最近项目中的一个需求就是对于一串数据,通过一系列的判断条件来判断其是不是符合要求的。这个判断条件是不断变化的。也就是说随时要增加新的判断条件或者移除旧的判断条件,也行我们会觉得写一大串if…else if ….不就解决了吗?当然,if….else if可以解决问题,但软件有一个重要的原则:开闭原则。

什么是开闭原则:

在面向对象编程领域中,开闭原则规定”软件中的对象(类,模块,函数等等)应该对于扩展是开放的,但是对于修改是封闭的”。试想,如果判断条件不断的增加,难道要不断的去增加efse if吗?如果有上百的判断条件是不是要写上百个else..if..这样代码臃肿,给后期维护带来巨大的困难。

责任链模式:

使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
适用场景:

  • 1、有多个的对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定;
  • 2、在不明确指定接收者的情况下,向多个对象中的一个提交一个请求;
  • 3、处理一个请求的对象集合应被动态指定。

第一次接触责任链模式的时候是在研究Struts2的时候,当时便惊叹与它巧妙的设计,可以讲一个庞大的处理流程完成的这么优雅。现在我们来用责任链模式完成上述的要求:

执行判断的抽象类

public abstract class AbstractJudgment {
    //需要继续判断的内容
    private String content = null;
    // 责任链的下一个节点,即处理者
    public AbstractJudgment nextJudg;


    public AbstractJudgment(String content) {
        this.content = content;
    }

    public String getContent() {
        return 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值