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

看板Soft_Job (軟體人)作者 (C.C.Lemon)時間3年前 (2022/04/02 10:31), 編輯推噓0(003)
留言3則, 1人參與, 3年前最新討論串6/8 (看更多)
其實就是在做 instance 的管理 物件導向一個很重要概念就是 多型 所以你可以在 runtime 再決定 instance 到底是什麼 IoC 就是實體是外部送進來 不要自己去 new DI 只是在提示 要送東西進來的人說 你想要的是什麼東西 例如我們可以用 interface 用 name 用 類型等等 來提示我想要的實體是什麼 就這麼簡單而已 那這有什麼好處呢... 好處很多 以你那個例子 如果 Server1 產生了 dao1 如果 Server2 也想要這個實體的時候 你要怎麼把這個實體送過去給 Server2 你可能要寫成 main{ server1 = Server1() server2 = Server2(server1.dao1) } 如果你的實體都是個別產生的時候 你就要想辦法去維護這些關係 但是你會說 Server2 可以自己 new 這種也只是一種實體管理的特例 prototype 但是這樣你會有 2個 實體 就要看裡面的特性來決定是否正確 另外還有個問題是 當你自己 new 的時候 很比較缺乏彈性 例如你是 接手開發 Dao1 的人 你想要去做裡面的 override 比較理想的改法是 你寫一個子類別 Dao11 繼承 Dao1 (例如 Dao1 是第三方的 lib) 但是如果你是寫成 Server1 去 new Dao1 你要怎麼把 Dao11 送進去給 Server1 再來就是統一的容器管理 有一個好處就是 他可以在容器裡面幫我們加工 所以可以加上新的 life cycle 可以送 event 可以做 aop 等等 另外有一點就是 早期的 di 是透過 xml 來設定的 這樣有一個很大的好處是 不用重新編譯 現在雖然都是透過 annotation or java config 但是也都是可以透過 application.yaml 來 override 達到不用重新編譯就可以替換的效果 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.161.49.45 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1648866702.A.F76.html

04/02 23:05, 3年前 , 1F
不管annotation還是config都有個問題 就是隱藏實作細
04/02 23:05, 1F

04/02 23:06, 3年前 , 2F
節導致你沒坑到你不知道... 除非你是原作者
04/02 23:06, 2F

04/02 23:10, 3年前 , 3F
做的越多你就離計算機愈來愈遠 冏
04/02 23:10, 3F
文章代碼(AID): #1YHxMEzs (Soft_Job)
討論串 (同標題文章)
文章代碼(AID): #1YHxMEzs (Soft_Job)