作者Jasonzheng (jason)
看板Soft_Job
標題R: [心得] 控制反轉 (IoC) 與 依賴注入 (DI)
時間Thu Nov 24 20:16:17 2016
回覆 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
推 Chris926926: 他這樣也不是一兩天的事了XD 11/24 20:31
→ pttworld: 原文是establish from,不是establish by。 11/24 20:50
→ pttworld: 沒有誰建立誰的問題而是建立的來源是什麼。 11/24 20:50
→ pttworld: 王者這本書我有,你把該頁的8為何是反轉再讀一遍。 11/24 20:55
→ pttworld: 那段是寫獲得而非建立,也就是內文和圖不一致。 11/24 20:56
→ pttworld: 當UML是reference要如何談建立,回文我已經說「精確」。 11/24 20:57
→ pttworld: 我會建議找原文且是傳統的圖來說明會比較清楚。 11/24 21:03
→ Jasonzheng: 所以我就說是主被動關係阿~ 11/24 21:10
→ Jasonzheng: 好啦 用字的話就不爭辯了 11/24 21:11
→ Jasonzheng: 很高興最後是以理性交流收尾 11/24 21:11
→ Jasonzheng: 謝謝:) 11/24 21:11
→ Jasonzheng: p.s 獲得和建立其實是一樣的喔 不好意思.. 11/24 21:13
→ Jasonzheng: 你看他上面寫"A獲得C"對吧 11/24 21:14
→ Jasonzheng: 但圖示 是寫 主動"建立" 11/24 21:15
→ pttworld: 建立之後才能獲得。獲得一個已建立的。 11/24 21:15
→ Jasonzheng: 爭這個沒意義啦...意義相通就好了.. 11/24 21:15
→ pttworld: DI的injection就是說明建立後的依賴物件注入。 11/24 21:16
→ pttworld: 被注入方獲得了該注入的物件。這是在講建立後的事。 11/24 21:16
→ Jasonzheng: 沒啦 您誤會了 6.7 的圖例中 是寫 "沒有" Ioc/DI時 11/24 21:18
→ pttworld: 誰建立誰是我跟你的邏輯命題的,我自己是不會如此出題。 11/24 21:18
→ Jasonzheng: 這時您可以發現 他的用詞 一樣是 "建立".. 11/24 21:18
→ Jasonzheng: 好的~對於中文的理解不同而已 11/24 21:19
→ Jasonzheng: 沒關係 這種事情沒有對錯 11/24 21:19
→ Jasonzheng: 大大您不用認為我是想糾正您啦 ^^" 11/24 21:19
→ pttworld: 7是控制該物件實例的建立。來源在我身上我控制的意思。 11/24 21:20
→ Jasonzheng: 反正這樣的理性溝通是好的..比之前好..哈哈 11/24 21:20
→ Jasonzheng: 其實您說我錯的那張圖..跟這張一樣.. 11/24 21:22
→ Jasonzheng: 您又自己幫我解釋了 11/24 21:23
→ Jasonzheng: 那就別說我錯了 xd 11/24 21:23
推 Frozenmouse: 原po好有耐心 XD 11/24 21:23
→ pttworld: from和by如果不能確定,我覺得是我比較有耐心。 11/24 21:24
→ pttworld: 請找原文是傳統的圖來說明。 11/24 21:24
→ Jasonzheng: 很簡單 您是from 我就是 by 反之 11/24 21:25
→ Jasonzheng: 從第二點的解釋 就能知道了.. 11/24 21:25
→ pttworld: Dependency_inversion_principle的wiki。 11/24 21:27
→ Jasonzheng: 拜託不要一定要別人跟您用詞一樣才罷休...這是資訊.. 11/24 21:28
→ Jasonzheng: 不是國文.. 11/24 21:28
→ Jasonzheng: 別談 wiki 了 沒有可信度 11/24 21:28
→ pttworld: 你已經說你的答案是by了,那我到此為止,留給公評。 11/24 21:29
→ Jasonzheng: dIP 原文 我有書 11/24 21:29
→ Jasonzheng: 如果我錯了..那您也錯了阿.. 11/24 21:30
→ Jasonzheng: 注意我們兩個答案是反的... 11/24 21:30
→ Jasonzheng: 您的答案到底是 11/24 21:30
→ Jasonzheng: 1. 低階被高階建立 11/24 21:31
→ Jasonzheng: 還是 11/24 21:31
→ Jasonzheng: 2.低階本身建立了高階 11/24 21:31
→ Jasonzheng: 我把畢生國文所學拿出來了...希望您看的懂 11/24 21:32
→ corrupt003: J大就不要再理他了。重點是觀念傳達,應該不需要執著 11/24 21:42
→ corrupt003: 是誰建立物件吧? 11/24 21:42
→ Jasonzheng: 誰建立物件蠻重要的 但明明我跟他觀念一樣 11/24 22:11
→ Jasonzheng: P 大卻還是堅持..qq 11/24 22:12
推 Chris926926: 辛苦你了,把這些時間拿來專心準備下一篇吧 11/24 23:34
→ Chris926926: 話說下一篇主題是什麼,敲碗~~ 11/24 23:35
推 vn509942: 實務也看過兩個人說的意思一樣,但還是咆嘯收場(摸頭 11/24 23:39
推 goths5958: 關注這板夠久 就會知道這板有些東西可以忽略 11/25 00:40
推 Frozenmouse: 就很堅持要用自己獨特的中文用詞還不想解釋清楚啊orz 11/25 03:58
→ Frozenmouse: 原po真的辛苦了 11/25 03:58
推 gmoz: 無視就好了 11/25 09:07
→ robber1234: 無視就好了. 有公司規定碼一定要 DI 的再叫我去拜 11/25 09:48
推 Ekmund: 蠻難無視的...使用觀念上是一致 但概念確實有差 11/25 11:13
→ Ekmund: 以版眾角度來說 向兩位致上謝意了 11/25 11:16
→ Jasonzheng: 不不不..觀念一致使用也一致... 11/25 12:41
→ Jasonzheng: 唯獨使用的名詞不一致.. 11/25 12:42
→ Jasonzheng: 所以覺得硬要文字遊戲超級無聊 11/25 12:43
→ Jasonzheng: 前面之所以想跟他釐清 11/25 12:43
→ Jasonzheng: 是擔心是否自己真的有錯 會誤導版友 11/25 12:43
→ Jasonzheng: 幸運的是 再反覆參閱文獻後 11/25 12:44
→ Jasonzheng: 我認為我撰文的內容至少沒問題 11/25 12:45
→ Jasonzheng: 但是 中文名詞的使用 就看各位喜歡我的用字還是 P大 11/25 12:46
→ Jasonzheng: 的了 11/25 12:46
→ Jasonzheng: 類別的實例 他硬是要分 from 或 by 11/25 12:46
→ Jasonzheng: 但 uml 告訴我們 使用 create (建立)關鍵字即可 11/25 12:48
推 MISandra: 到底在堅持什麼問號? 11/25 13:44
→ MISandra: 原po還是把時間花在更重要的地方吧。 11/25 13:44