[心得] 控制反轉 (IoC) 與 依賴注入 (DI)
各位好:
這是小弟第三篇部落文,是很多人愛談的 IoC/DI,是傳說中學會這個,就能秒
學各框架的重要觀念。
接續前兩篇文的觀念,簡單說明 IoC/DI ,並且把大部分人混淆的觀念: 依賴反
轉 vs 控制反轉 vs 工廠,做個釐清。
才出兩篇文,有很多支持,我很感激,酸酸也比我意想的多,但我是不會玻璃心
碎的,只希望能幫助更多人,並釐清網路上的錯誤資訊... (一堆人說 IoC = DIP,我超
傻眼)。
高手可以略過,文中沒有高深莫測的程式,只有腦殘簡單的容器範例,也沒有酷
炫的語法糖,一切都回歸純樸。
請服用:
https://blog.jason.party/3/ioc-di
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.72.242.145
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1479874039.A.344.html
推
11/23 12:42, , 1F
11/23 12:42, 1F
不敢當 ^^"
每個人都有可學之處 :)
推
11/23 12:42, , 2F
11/23 12:42, 2F
推
11/23 13:00, , 3F
11/23 13:00, 3F
三年沒打 lol 了 哈哈哈
推
11/23 13:01, , 4F
11/23 13:01, 4F
推
11/23 13:45, , 5F
11/23 13:45, 5F
推
11/23 13:57, , 6F
11/23 13:57, 6F
推
11/23 14:06, , 7F
11/23 14:06, 7F
感謝~
有建議或批評再麻煩各位了
我需要加強文筆 ~"~
※ 編輯: Jasonzheng (42.72.242.145), 11/23/2016 15:14:25
推
11/23 15:30, , 8F
11/23 15:30, 8F
推
11/23 16:13, , 9F
11/23 16:13, 9F
→
11/23 17:15, , 10F
11/23 17:15, 10F
→
11/23 17:15, , 11F
11/23 17:15, 11F
推
11/23 18:32, , 12F
11/23 18:32, 12F
推
11/23 19:32, , 13F
11/23 19:32, 13F
推
11/23 19:48, , 14F
11/23 19:48, 14F
推
11/23 20:02, , 15F
11/23 20:02, 15F
推
11/23 20:15, , 16F
11/23 20:15, 16F
→
11/23 20:56, , 17F
11/23 20:56, 17F
→
11/23 20:57, , 18F
11/23 20:57, 18F
傳統是怎樣? 結構化語言是怎樣?
建議你可以看看此篇
http://stg-tud.github.io/sedc/Lecture/ss15/3.4-DIP.pdf
然後大大,您真的很無聊
從 Java 版 遠道而來 真是辛苦了
主管? 嗯嗯 棒
推
11/23 21:38, , 19F
11/23 21:38, 19F
※ 編輯: Jasonzheng (42.72.242.145), 11/23/2016 21:54:10
推
11/23 22:02, , 20F
11/23 22:02, 20F
推
11/23 22:17, , 21F
11/23 22:17, 21F
推
11/23 22:27, , 22F
11/23 22:27, 22F
→
11/23 22:28, , 23F
11/23 22:28, 23F
推
11/23 23:53, , 24F
11/23 23:53, 24F
推
11/24 00:16, , 25F
11/24 00:16, 25F
推
11/24 00:59, , 26F
11/24 00:59, 26F
→
11/24 01:00, , 27F
11/24 01:00, 27F
推
11/24 01:03, , 28F
11/24 01:03, 28F
感謝
→
11/24 04:43, , 29F
11/24 04:43, 29F
是傳統的依賴關係
談論到實例前,得先釐清此觀念
→
11/24 04:47, , 30F
11/24 04:47, 30F
我是無法理解,這有什麼好優越的啦
推
11/24 06:44, , 31F
11/24 06:44, 31F
推
11/24 06:49, , 32F
11/24 06:49, 32F
推
11/24 07:19, , 33F
11/24 07:19, 33F
噓
11/24 08:56, , 34F
11/24 08:56, 34F
→
11/24 08:56, , 35F
11/24 08:56, 35F
謝謝指教!
我覺得您比某p大有建設性多了 :)
但是很抱歉,
我沒有想要打較正式的文章
也沒自認幽默
只想以輕鬆的口吻撰文
抱歉不適合您閱讀
推
11/24 09:09, , 36F
11/24 09:09, 36F
→
11/24 09:13, , 37F
11/24 09:13, 37F
推
11/24 09:33, , 38F
11/24 09:33, 38F
推
11/24 10:19, , 39F
11/24 10:19, 39F
推
11/24 10:28, , 40F
11/24 10:28, 40F
推
11/24 11:00, , 41F
11/24 11:00, 41F
感謝各位
我也認為
登大雅之堂要幹嘛 xd
→
11/24 11:01, , 42F
11/24 11:01, 42F
→
11/24 11:12, , 43F
11/24 11:12, 43F
您覺得有誤,就請拿出依據
並非您的自我認知即是一切
我撰文也有大量做功課
並非您所想隨便寫寫 不求甚解
→
11/24 11:13, , 44F
11/24 11:13, 44F
比較好奇的是:
DI 一詞的原作 Martin 都沒有畫圖了
您竟然可以知道什麼才叫"正確"的圖
我也是感到佩服。
再次強調,有錯誤就拿出依據
不要自己模稜兩可,舉例帶過
這樣也才有進一步討論的必要,感恩。
推
11/24 11:21, , 45F
11/24 11:21, 45F
→
11/24 11:21, , 46F
11/24 11:21, 46F
如果您已經 bind 過 或有任何型別提示
(例如: 某些框架,會做類別名稱判斷,"User"Repository 會自動注入到 "User"Control
ler)
符合以上條件的話,是的。
但如果不想使用容器,自己 new Game 再設值給 Computer,當然也行 :)
※ 編輯: Jasonzheng (60.250.236.43), 11/24/2016 12:24:56
推
11/24 12:21, , 47F
11/24 12:21, 47F
→
11/24 12:21, , 48F
11/24 12:21, 48F
DI 是 實做 IoC 的一種方式,
有做好 DI 當然就實做了 IoC ^^
※ 編輯: Jasonzheng (60.250.236.43), 11/24/2016 12:27:47
→
11/24 12:45, , 49F
11/24 12:45, 49F
推
11/24 14:30, , 50F
11/24 14:30, 50F
推
11/24 23:04, , 51F
11/24 23:04, 51F
推
11/25 01:04, , 52F
11/25 01:04, 52F
推
11/26 13:12, , 53F
11/26 13:12, 53F
推
11/29 12:07, , 54F
11/29 12:07, 54F
推
12/05 11:16, , 55F
12/05 11:16, 55F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 6 篇):