R: [心得] 控制反轉 (IoC) 與 依賴注入 (DI)

看板Soft_Job作者 (jason)時間7年前 (2016/11/24 20:16), 7年前編輯推噓9(9065)
留言74則, 11人參與, 最新討論串5/6 (看更多)
回覆 pttworld 大: 非常感謝您的回覆,這也是我想有的交流方式,這樣的討論正面多了且立意清晰。 以下我會引用一些我撰文時的參考文獻,不是拿來裝逼,是想佐證自身理論及內容,並非 毫無根據,以免口說無憑。 ------------------------------------- 關於第一點,我們達成了共識,沒有任何問題。 ------------------------------------- 但,問題出在第二點: 您說是 "低階創造高階" 但其實 我的答案是 "高階創造低階"... 應該英文翻譯的主被動關係造成誤會吧, 但也就是說 我們對於觀念的理解是一致的。 例如: 《王者歸來 品味Java 的 23 種設計模式》 一書中 6-15,圖和實例建立的文字說明,都 跟我一致 http://i.imgur.com/QVYzCuT.jpg
並且 Martin Fowler 的 《UML Distilled Third Edition》3-20, 也提及了 實例的箭頭端, 是目標元素實例,來源端則是高階模組, 因此 我說是 "高階建立低階" 並無錯,圖也更沒問題了。 Martin 的 ioc/di 原文範例 uml class 圖, 也是如出一轍 http://i.imgur.com/eHzy3OI.jpg
但畢竟中文難以表達此種關係, 我們對於文字的使用方式有歧見,那也無可奈何, 知道彼此觀念相同即可,就不著墨在文字遊戲上了。 ------------------------------------- 第三點,沒有問題。 ------------------------------------- 您提的題外話定名問題,我想就更不用討論了, 為了避免糾紛與歧見, 我使用的例子,是彙整出 S.O.L.I.D 的作者, Robert C. Martin 於其原著 《Agile Software Development》131 頁 的 範例, 除了 Button 方法名稱,為了好理解做了更改, 其餘完全一模一樣 http://i.imgur.com/PO09TgS.jpg
相信原著都這樣寫了,您應該也可認同了。 ------------------------------------- 總結: 結果吵了這麼久,就只是彼此文字使用上的誤會, 希望經過這次說明,事情能告一段落, 也希望能跟 p大 盡釋前嫌,未來多一些此般的正面討論,相信較有意義。 最後想跟大大說明,我撰文方式雖然輕鬆但並不隨便, 皆有閱讀大量文獻,防止錯誤與含糊, 因此您若給予建議我很感激, 但請勿加上 "反正不要求正確性了"等等詞彙, 我只會覺得您很那個, 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.72.181.177 ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1479989779.A.A32.html ※ 編輯: Jasonzheng (42.72.181.177), 11/24/2016 20:25:15

11/24 20:31, , 1F
他這樣也不是一兩天的事了XD
11/24 20:31, 1F

11/24 20:50, , 2F
原文是establish from,不是establish by。
11/24 20:50, 2F

11/24 20:50, , 3F
沒有誰建立誰的問題而是建立的來源是什麼。
11/24 20:50, 3F

11/24 20:55, , 4F
王者這本書我有,你把該頁的8為何是反轉再讀一遍。
11/24 20:55, 4F

11/24 20:56, , 5F
那段是寫獲得而非建立,也就是內文和圖不一致。
11/24 20:56, 5F

11/24 20:57, , 6F
當UML是reference要如何談建立,回文我已經說「精確」。
11/24 20:57, 6F

11/24 21:03, , 7F
我會建議找原文且是傳統的圖來說明會比較清楚。
11/24 21:03, 7F

11/24 21:10, , 8F
所以我就說是主被動關係阿~
11/24 21:10, 8F

11/24 21:11, , 9F
好啦 用字的話就不爭辯了
11/24 21:11, 9F

11/24 21:11, , 10F
很高興最後是以理性交流收尾
11/24 21:11, 10F

11/24 21:11, , 11F
謝謝:)
11/24 21:11, 11F

11/24 21:13, , 12F
p.s 獲得和建立其實是一樣的喔 不好意思..
11/24 21:13, 12F

11/24 21:14, , 13F
你看他上面寫"A獲得C"對吧
11/24 21:14, 13F

11/24 21:15, , 14F
但圖示 是寫 主動"建立"
11/24 21:15, 14F

11/24 21:15, , 15F
建立之後才能獲得。獲得一個已建立的。
11/24 21:15, 15F

11/24 21:15, , 16F
爭這個沒意義啦...意義相通就好了..
11/24 21:15, 16F

11/24 21:16, , 17F
DI的injection就是說明建立後的依賴物件注入。
11/24 21:16, 17F

11/24 21:16, , 18F
被注入方獲得了該注入的物件。這是在講建立後的事。
11/24 21:16, 18F

11/24 21:18, , 19F
沒啦 您誤會了 6.7 的圖例中 是寫 "沒有" Ioc/DI時
11/24 21:18, 19F

11/24 21:18, , 20F
誰建立誰是我跟你的邏輯命題的,我自己是不會如此出題。
11/24 21:18, 20F

11/24 21:18, , 21F
這時您可以發現 他的用詞 一樣是 "建立"..
11/24 21:18, 21F

11/24 21:19, , 22F
好的~對於中文的理解不同而已
11/24 21:19, 22F

11/24 21:19, , 23F
沒關係 這種事情沒有對錯
11/24 21:19, 23F

11/24 21:19, , 24F
大大您不用認為我是想糾正您啦 ^^"
11/24 21:19, 24F

11/24 21:20, , 25F
7是控制該物件實例的建立。來源在我身上我控制的意思。
11/24 21:20, 25F

11/24 21:20, , 26F
反正這樣的理性溝通是好的..比之前好..哈哈
11/24 21:20, 26F

11/24 21:22, , 27F
其實您說我錯的那張圖..跟這張一樣..
11/24 21:22, 27F

11/24 21:23, , 28F
您又自己幫我解釋了
11/24 21:23, 28F

11/24 21:23, , 29F
那就別說我錯了 xd
11/24 21:23, 29F

11/24 21:23, , 30F
原po好有耐心 XD
11/24 21:23, 30F

11/24 21:24, , 31F
from和by如果不能確定,我覺得是我比較有耐心。
11/24 21:24, 31F

11/24 21:24, , 32F
請找原文是傳統的圖來說明。
11/24 21:24, 32F

11/24 21:25, , 33F
很簡單 您是from 我就是 by 反之
11/24 21:25, 33F

11/24 21:25, , 34F
從第二點的解釋 就能知道了..
11/24 21:25, 34F

11/24 21:27, , 35F
Dependency_inversion_principle的wiki。
11/24 21:27, 35F

11/24 21:28, , 36F
拜託不要一定要別人跟您用詞一樣才罷休...這是資訊..
11/24 21:28, 36F

11/24 21:28, , 37F
不是國文..
11/24 21:28, 37F

11/24 21:28, , 38F
別談 wiki 了 沒有可信度
11/24 21:28, 38F

11/24 21:29, , 39F
你已經說你的答案是by了,那我到此為止,留給公評。
11/24 21:29, 39F

11/24 21:29, , 40F
dIP 原文 我有書
11/24 21:29, 40F

11/24 21:30, , 41F
如果我錯了..那您也錯了阿..
11/24 21:30, 41F

11/24 21:30, , 42F
注意我們兩個答案是反的...
11/24 21:30, 42F

11/24 21:30, , 43F
您的答案到底是
11/24 21:30, 43F

11/24 21:31, , 44F
1. 低階被高階建立
11/24 21:31, 44F

11/24 21:31, , 45F
還是
11/24 21:31, 45F

11/24 21:31, , 46F
2.低階本身建立了高階
11/24 21:31, 46F

11/24 21:32, , 47F
我把畢生國文所學拿出來了...希望您看的懂
11/24 21:32, 47F

11/24 21:42, , 48F
J大就不要再理他了。重點是觀念傳達,應該不需要執著
11/24 21:42, 48F

11/24 21:42, , 49F
是誰建立物件吧?
11/24 21:42, 49F

11/24 22:11, , 50F
誰建立物件蠻重要的 但明明我跟他觀念一樣
11/24 22:11, 50F

11/24 22:12, , 51F
P 大卻還是堅持..qq
11/24 22:12, 51F

11/24 23:34, , 52F
辛苦你了,把這些時間拿來專心準備下一篇吧
11/24 23:34, 52F

11/24 23:35, , 53F
話說下一篇主題是什麼,敲碗~~
11/24 23:35, 53F

11/24 23:39, , 54F
實務也看過兩個人說的意思一樣,但還是咆嘯收場(摸頭
11/24 23:39, 54F

11/25 00:40, , 55F
關注這板夠久 就會知道這板有些東西可以忽略
11/25 00:40, 55F

11/25 03:58, , 56F
就很堅持要用自己獨特的中文用詞還不想解釋清楚啊orz
11/25 03:58, 56F

11/25 03:58, , 57F
原po真的辛苦了
11/25 03:58, 57F

11/25 09:07, , 58F
無視就好了
11/25 09:07, 58F

11/25 09:48, , 59F
無視就好了. 有公司規定碼一定要 DI 的再叫我去拜
11/25 09:48, 59F

11/25 11:13, , 60F
蠻難無視的...使用觀念上是一致 但概念確實有差
11/25 11:13, 60F

11/25 11:16, , 61F
以版眾角度來說 向兩位致上謝意了
11/25 11:16, 61F

11/25 12:41, , 62F
不不不..觀念一致使用也一致...
11/25 12:41, 62F

11/25 12:42, , 63F
唯獨使用的名詞不一致..
11/25 12:42, 63F

11/25 12:43, , 64F
所以覺得硬要文字遊戲超級無聊
11/25 12:43, 64F

11/25 12:43, , 65F
前面之所以想跟他釐清
11/25 12:43, 65F

11/25 12:43, , 66F
是擔心是否自己真的有錯 會誤導版友
11/25 12:43, 66F

11/25 12:44, , 67F
幸運的是 再反覆參閱文獻後
11/25 12:44, 67F

11/25 12:45, , 68F
我認為我撰文的內容至少沒問題
11/25 12:45, 68F

11/25 12:46, , 69F
但是 中文名詞的使用 就看各位喜歡我的用字還是 P大
11/25 12:46, 69F

11/25 12:46, , 70F
的了
11/25 12:46, 70F

11/25 12:46, , 71F
類別的實例 他硬是要分 from 或 by
11/25 12:46, 71F

11/25 12:48, , 72F
但 uml 告訴我們 使用 create (建立)關鍵字即可
11/25 12:48, 72F

11/25 13:44, , 73F
到底在堅持什麼問號?
11/25 13:44, 73F

11/25 13:44, , 74F
原po還是把時間花在更重要的地方吧。
11/25 13:44, 74F
文章代碼(AID): #1ODjeJeo (Soft_Job)
討論串 (同標題文章)
文章代碼(AID): #1ODjeJeo (Soft_Job)