Re: [請益] Spring boot的依賴注入降低耦合的例子已刪文
小弟不才的理解是
DI的目的本來就不是解耦
而是提供一個注入的方式 至於實際上控制以及
依賴反轉的部份 還是看你怎麼實作注入的實例
再review一次DI graph就會了解 Dao 實際上在
injected時應該是抽象類 甚至其實不應該注入
Dao 而是用另一個Repository去控制他
並且Module是Provide Repository的介面給
Service而不是Repo的實作
這個Repo的實作部分在DI component building
時可以inject更多其他的東西
也因此在最上層的component中不需要知道
這些抽象類到底實作了什麼 又或是到底inject
了什麼其他類
實務上可以有一個component負責注入
這個component compose了多個module
這些modules provide的 repos的介面
repos內可以compose多個Dao
最後Service只需要注入一個Repo的介面
且不用管你的component怎麼實作且注入的
這樣就完全解耦了 也就是說Repo像一個工具
箱 然後DI負責組合這個工具箱最後提供一個工
具箱的使用面板(interface) 給service
最後Service只用那個抽象面板操作工具箱而不
管工具箱裡面的工具哪來的
在功能要擴展變化或是測試時 直接更動工具箱
裡面的工具就行 Service完全不需要動到
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 27.125.138.130 (新加坡)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1648805090.A.317.html
討論串 (同標題文章)
完整討論串 (本文為第 4 之 8 篇):