欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

springboot責任鏈模式實現(xiàn)多級校驗

 更新時間:2024年11月22日 10:19:41   作者:你知道煙火嗎  
責任鏈模式是將鏈中的每一個節(jié)點看作是一個對象,每個節(jié)點處理的請求不同,且內(nèi)部自動維護一個下一節(jié)點對象,下面我們來聊聊springboot如何利用責任鏈模式實現(xiàn)多級校驗吧

責任鏈模式是將鏈中的每一個節(jié)點看作是一個對象,每個節(jié)點處理的請求不同,且內(nèi)部自動維護一個下一節(jié)點對象。

當一個請求從鏈式的首段發(fā)出時,會沿著鏈的路徑依此傳遞給每一個節(jié)點對象,直至有對象處理這個請求為止。

屬于行為型模式。

1、定義處理器接口

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class Order {

    private Integer creditScore;
    private Integer quantity;
}
public interface OrderHandler {

    boolean handle(Order order);
}

2、實現(xiàn)不同的校驗處理器

信用校驗處理器:

@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、服務(wù)類調(diào)用責任鏈

@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、優(yōu)點

解耦邏輯:每個校驗邏輯獨立實現(xiàn),符合單一職責原則

靈活擴展:新增校驗只需添加新的Handler實現(xiàn)類,無需修改現(xiàn)有代碼

支持動態(tài)調(diào)整:可通過調(diào)整List的順序來改變校驗順序

利用Spring自動裝配:使用Spring的依賴注入簡化責任鏈構(gòu)建

到此這篇關(guān)于springboot責任鏈模式實現(xiàn)多級校驗的文章就介紹到這了,更多相關(guān)springboot多級校驗內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MyBatis 實現(xiàn)批量插入和刪除中雙層循環(huán)的寫法案例

    MyBatis 實現(xiàn)批量插入和刪除中雙層循環(huán)的寫法案例

    這篇文章主要介紹了MyBatis 實現(xiàn)批量插入和刪除中雙層循環(huán)的寫法案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • 將Java對象序列化成JSON和XML格式的實例

    將Java對象序列化成JSON和XML格式的實例

    下面小編就為大家分享一篇將Java對象序列化成JSON和XML格式的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • Maven中兩個命令clean 和 install的使用

    Maven中兩個命令clean 和 install的使用

    Maven是一個項目管理和自動構(gòu)建工具,clean命令用于刪除項目中由先前構(gòu)建生成的target目錄,install命令用于將打包好的jar包安裝到本地倉庫中,供其他項目依賴使用,下面就來詳細的介紹一下這兩個命令
    2024-09-09
  • springboot項目以jar包運行的操作方法

    springboot項目以jar包運行的操作方法

    公司一個springboot項目本來是打war包的,突然要改為打jar包,不知所措了,糾結(jié)該如何操作呢,折騰半天終于搞定了,下面把解決方案分享給大家,對springboot打jar包方式感興趣的朋友一起看看吧
    2021-06-06
  • Java 中的語法糖,真甜

    Java 中的語法糖,真甜

    語法糖(Syntactic sugar),也叫做糖衣語法,是英國科學家發(fā)明的一個術(shù)語,通常來說使用語法糖能夠增加程序的可讀性,從而減少程序代碼出錯的機會.這篇文章主要介紹了Java 中的語法糖知識,需要的朋友可以參考下
    2020-12-12
  • IDEA報錯:java:無效的源發(fā)行版21解決方式

    IDEA報錯:java:無效的源發(fā)行版21解決方式

    這篇文章主要給大家介紹了關(guān)于IDEA報錯:java:無效的源發(fā)行版21的解決方式,這個錯誤是因為你的項目使用的Java版本與你的IDEA使用的Java版本不一致導(dǎo)致的,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2024-06-06
  • 關(guān)于easyExcel中讀取Excel表頭的實例說明

    關(guān)于easyExcel中讀取Excel表頭的實例說明

    EasyExcel是阿里巴巴開源的一個excel處理框架,以使用簡單、節(jié)省內(nèi)存著稱,下面這篇文章主要給大家介紹了關(guān)于easyExcel中讀取Excel表頭的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-06-06
  • Java中的LinkedHashMap及LRU緩存機制詳解

    Java中的LinkedHashMap及LRU緩存機制詳解

    這篇文章主要介紹了Java中的LinkedHashMap及LRU緩存機制詳解,LinkedHashMap繼承自HashMap,它的多種操作都是建立在HashMap操作的基礎(chǔ)上的,同HashMap不同的是,LinkedHashMap維護了一個Entry的雙向鏈表,保證了插入的Entry中的順序,需要的朋友可以參考下
    2023-09-09
  • Spring BeanFactory和FactoryBean區(qū)別解析

    Spring BeanFactory和FactoryBean區(qū)別解析

    這篇文章主要介紹了Spring BeanFactory和FactoryBean區(qū)別解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03
  • Java實現(xiàn)簡單文字驗證碼以及人機驗證

    Java實現(xiàn)簡單文字驗證碼以及人機驗證

    人機驗證技術(shù)的發(fā)展也在不斷進化,從最初的簡單驗證碼到現(xiàn)在的人工智能驅(qū)動的高級驗證系統(tǒng),下面這篇文章主要介紹了Java實現(xiàn)簡單文字驗證碼以及人機驗證的相關(guān)資料,需要的朋友可以參考下
    2025-04-04

最新評論