当前位置: 代码网 > it编程>编程语言>Java > springboot责任链模式实现多级校验

springboot责任链模式实现多级校验

2024年11月25日 Java 我要评论
责任链模式是将链中的每一个节点看作是一个对象,每个节点处理的请求不同,且内部自动维护一个下一节点对象。当一个请求从链式的首段发出时,会沿着链的路径依此传递给每一个节点对象,直至有对象处理这个请求为止。

责任链模式是将链中的每一个节点看作是一个对象,每个节点处理的请求不同,且内部自动维护一个下一节点对象。

当一个请求从链式的首段发出时,会沿着链的路径依此传递给每一个节点对象,直至有对象处理这个请求为止。

属于行为型模式。

1、定义处理器接口

@data
@allargsconstructor
@noargsconstructor
@builder
public class order {

    private integer creditscore;
    private integer quantity;
}
public interface orderhandler {

    boolean handle(order order);
}

2、实现不同的校验处理器

信用校验处理器:

@component
public class credithandler implements orderhandler{
    @override
    public boolean handle(order order) {
        if (order.getcreditscore() % 2 != 0){
            system.out.println("信用不足");
            return false;
        }
        return true;
    }
}

库存校验处理器:

@component
public class stockhandler implements orderhandler{
    @override
    public boolean handle(order order) {
        if (order.getquantity() > 20){
            system.out.println("库存不足");
            return false;
        }
        return true;
    }
}

3、责任链管理器

@component
public class orderhandlerchain {

    private final list<orderhandler> handlers;

    public orderhandlerchain(list<orderhandler> handlers){
        this.handlers = handlers;
    }

    public boolean process(order order){
        for (orderhandler handler : handlers) {
            if (!handler.handle(order)){
                return false;
            }
        }
        return true;
    }
}

4、服务类调用责任链

@component
public class orderservice {

    private final orderhandlerchain handlerchain;

    private orderservice(orderhandlerchain handlerchain){
        this.handlerchain = handlerchain;
    }

    public boolean processorder(order order){
        boolean process = handlerchain.process(order);
        if (process){
            system.out.println("校验成功");
        }
        return process;
    }
}

5、测试

@springboottest
public class orderservicetest {

    @autowired
    private orderservice orderservice;

    @test
    public void testorderprocess(){
        order order = new order(2, 5);
        orderservice.processorder(order);

        order order1 = new order(2, 5);
        orderservice.processorder(order1);

        order order2 = new order(2, 21);
        orderservice.processorder(order2);
    }

}

6、优点

解耦逻辑:每个校验逻辑独立实现,符合单一职责原则

灵活扩展:新增校验只需添加新的handler实现类,无需修改现有代码

支持动态调整:可通过调整list的顺序来改变校验顺序

利用spring自动装配:使用spring的依赖注入简化责任链构建

到此这篇关于springboot责任链模式实现多级校验的文章就介绍到这了,更多相关springboot多级校验内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com