PTT推薦

Re: [請益] Spring boot的依賴注入降低耦合的例子

看板Soft_Job標題Re: [請益] Spring boot的依賴注入降低耦合的例子作者
chal
( )
時間推噓 推:0 噓:0 →:5

比較早版本的spring 只能利用xml來依賴注入

其實反而比較好理解

spring 如果只有設定好xml的依賴注入

但是沒有設好依賴反轉(也就是宣告成介面)

那就會發現

當你要新增一個功能時 還是要去改動程式碼




但如果宣告成介面

而流程也沒有改變

但需要新功能時

其實只要新增一個實作,並改動xml

就能解決問題

這是最接近開閉原則

不修改軟體 但可以擴展軟體

類似任天堂換遊戲就換卡匣的方式

修改xml 就是 把卡匣拔出來 換新卡匣




後面的spring 改成可以用註解跟設定檔(config.java)的方式

反而會比較不好理解

因為都像是在改程式




補充一下任天堂的類比:


所有的遊戲卡匣只要遵循卡匣介面實作幾個方法

上 方法()
下 方法()
左 方法()
右 方法()
A 方法()
B 方法()
開始()
。。()

就能在任天堂主機裡被使用(xml抽換卡匣)

但如果今天有一個卡匣硬是多了一個C按鈕與C方法

而為了使生效,那就只能去修改任天堂主機(違反開閉原則)


--

※ PTT留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.233.145.188 (臺灣)
PTT 網址

superpandal04/21 09:24老實說這是最差的 等同把xml當動態語言使用 資料交換

superpandal04/21 09:26格式當語言是很糟糕的 沒有補全也難以除錯

如果是怕xml打錯 spring會提供基本的除錯 最理想的設計情況 是只要新增calss 就能完成功能修改 程式主體完全不用動 測試上就少了很多 spring boot 比 spring 方便許多 但也因為他省略了很多設定 直接學spring boot會比較不好理解 其實spring 是用反射機制去xml找出class檔 幫你new出來 所以也不一定要寫在xml上 其他文字檔理論上也可以(但可能就要自己寫一套) 只是你如果注入是寫在註解或config.java 很難去解釋為什麼還是要去更動程式主體才能完成功能修改 但如果是寫在xml或文字檔 你就可以說 這次只要新增calss就能完成任務 不用動到程式

netburst04/21 12:04把xml換成json 接受度會不會高一點

json比xml更像資料 類似簡化的xml 反而xml說是設定檔 還比較可以接受 可以用config.java 但心裡歸類成xml

※ 編輯: chal (36.235.66.147 臺灣), 04/21/2022 12:28:50

superpandal04/22 22:16我知道 但這樣有不少缺點 json的話好一點但差不多 就

superpandal04/22 22:16說到這了