理論
愛看理論的java軟件開發,請自己多看書羅,我簡單提下。主要精力放Demo的分析上。
職責鏈模式(Chain of Responsibility):使多個對象都有機會處理同一個請求,從而避免請求的發送者和接收者之間的耦合關係。將這些對象連成一條鏈,並沿著這條鏈傳遞該請求,直到有一個對象處理它為止。
學習目標
- 會在Spring項目中運用責任鏈模式
- 搞明白策略模式和責任鏈模式區別在哪裡
- 要研究策略模式的,請看我的文章
Spring代碼例子
java後端的軟件開發們,開車了,請注意
我的核心類就這麼多,現在一個個講下,最後運行看效果
責任鏈模式關鍵在於“鏈”這個字
- 利用jdk Iterator的自帶鏈的特性,可以非常方便的遍歷
- handler方法提供給client端調用
- 注意圖中3是Spring的set注入,責任對象都通過Spring容器注入
- 特別注意,但handlerIterator鏈值為空了,或沒下個值時要退出,不然就異常了
- 大家看框架代碼時會發現有些類是Chain【鏈條意思】單詞結尾的,注意責任鏈模式來啦
- 策略模式裡可沒有著個Chain.
具體責任業務類AHandler,入參有鏈對象CommandHandlerChain
這樣就持有了下個責任對象的引用
責任對象BHandler,一樣的
責任對象CHandler
這是client類
實現接口BeanFactoryAware原因是我要每次拿commandHandlerChain鏈類都要最新的實例
為什麼要最新的因為commandHandlerChain的Iterator
每次請求都會執行鏈類的handler方法
spring配置
注意我的鏈類,Scope是prototype
運行效果
java軟件開發,模擬調用
大家可以多去查查理論,回頭看看我的例子,理解起來會輕鬆很多。
一個字理解了“鏈”,就理解了責任鏈模式
閱讀更多 程序汪汪 的文章