Spring里責任鏈經典案例,學會了工資就能上2萬

理論

愛看理論的java軟件開發,請自己多看書羅,我簡單提下。主要精力放Demo的分析上。

職責鏈模式(Chain of Responsibility):使多個對象都有機會處理同一個請求,從而避免請求的發送者和接收者之間的耦合關係。將這些對象連成一條鏈,並沿著這條鏈傳遞該請求,直到有一個對象處理它為止。

學習目標

  • 會在Spring項目中運用責任鏈模式
  • 搞明白策略模式和責任鏈模式區別在哪裡
  • 要研究策略模式的,請看我的文章

Spring代碼例子

java後端的軟件開發們,開車了,請注意

我的核心類就這麼多,現在一個個講下,最後運行看效果

Spring裡責任鏈經典案例,學會了工資就能上2萬

Spring裡責任鏈經典案例,學會了工資就能上2萬

責任鏈模式關鍵在於“鏈”這個字

  • 利用jdk Iterator的自帶鏈的特性,可以非常方便的遍歷
  • handler方法提供給client端調用
  • 注意圖中3是Spring的set注入,責任對象都通過Spring容器注入
  • 特別注意,但handlerIterator鏈值為空了,或沒下個值時要退出,不然就異常了
  • 大家看框架代碼時會發現有些類是Chain【鏈條意思】單詞結尾的,注意責任鏈模式來啦
  • 策略模式裡可沒有著個Chain.
Spring裡責任鏈經典案例,學會了工資就能上2萬

具體責任業務類AHandler,入參有鏈對象CommandHandlerChain

這樣就持有了下個責任對象的引用

Spring裡責任鏈經典案例,學會了工資就能上2萬

責任對象BHandler,一樣的

Spring裡責任鏈經典案例,學會了工資就能上2萬

責任對象CHandler

Spring裡責任鏈經典案例,學會了工資就能上2萬

這是client類

實現接口BeanFactoryAware原因是我要每次拿commandHandlerChain鏈類都要最新的實例

為什麼要最新的因為commandHandlerChain的Iterator 屬性遍歷遊標值被調用完,遊標沒初始化

每次請求都會執行鏈類的handler方法

Spring裡責任鏈經典案例,學會了工資就能上2萬

Spring裡責任鏈經典案例,學會了工資就能上2萬

spring配置

注意我的鏈類,Scope是prototype

Spring裡責任鏈經典案例,學會了工資就能上2萬

Spring裡責任鏈經典案例,學會了工資就能上2萬

運行效果

java軟件開發,模擬調用

Spring裡責任鏈經典案例,學會了工資就能上2萬

大家可以多去查查理論,回頭看看我的例子,理解起來會輕鬆很多。

一個字理解了“鏈”,就理解了責任鏈模式

Spring裡責任鏈經典案例,學會了工資就能上2萬


分享到:


相關文章: