狠狠撸

狠狠撸Share a Scribd company logo
1
https://dotblogs.com.tw/jamis
2
https://dotblogs.com.tw/jamis
3
S2Container.NET
Ninject
4
以上套件今天通通
不會講
5
6
Inversion of Control
控制反轉
7
http://img.anyanother.com/image/no/56880/%E4%BD%A0%E6%83%B3%E8%AA%AA%E4%BB%80%E9%BA%BC%EF%BC%9F/
8
調用對象的控制權由
代碼本身移到外部對象
9
http://www.wxrw123.com/ms/20160331/316059.html
10
先不要管甚麼IOC了(誤……
你有聽過DIP嗎
11
12
13
ObjectA
ObjectB
14
15
16
8行的程式碼改了2行,
如果你有100行的程式
碼………你會
http://img.anyanother.com/image/no/54973/%E5%B9%B9%EF%BC%81%E9%A8%99%E6%88%91/ 17
想想剛剛的DIP
18
高階模組不應依賴低階模組
兩者應依賴抽象概念
19
把ObjectB, ObjectC
換成Interface
20
21
ObjectA
ObjectB
抽象物件(Interface)
ObjectC
22
還是需要修改一行程式碼
身為一個懶惰工程師這是不允許的
23
如果可以有一個元件
24
當程式碼需要某個物件就產生某
個物件那有多好
25
既然想要就來做一個吧
26
在Live coding之前
介紹一下使用到的技巧
27
28
29
30
Live Coding
31
大神都有告訴我
們要用介面
32
大神還告訴我們最好
不要直接New實體
33
網路文章都有
教說要用工廠
34
搞到最後只有一個感想
35
我只想快樂寫程式!
http://a5511867.pixnet.net/blog/post/60733045-
E5%AE%89%E8%A5%BF%E6%95%99%E7%B7%B4%E6%88%91%E5%A5%BD%E6%83%B3%E6%89%93%E7%B1%83%E7%90%83%EF%BC%8C%E7%81
%8C%E7%B1%83%E9%AB%98%E6%89%8B%E7%9A%84%E4%B8%89%E4%BA%95%E5%A3%BD%E3%80%82
36
可不可以不要
那麼複雜!
37
38
少寫了好幾行程式碼
少寫了好幾行程式碼
少寫了好幾行程式碼
39
40
http://img.anyanother.com/image/no/55564/%E6%93%8D%EF%BC%81%E8%AC%9B%E9%82%A3%E9%BA%BC%E5%A4%9A%E5%BB%A2%E8%A9%B1%E5%B9%B9%E5%97%8E%EF%BC%9F/
40
41
就是程式碼要New的對象
42
調用對象的創建者
43
就像是前面提到的工廠
44
45
46
47
48
49
50
51
52
53
Demo Class
Service
Locator
PrintService
Console
Helper
MD5Hepler
locates
uses
locates
locates
https://msdn.microsoft.com/zh-tw/library/ff648968.aspx
54
55
57
57
雖然知道IOC怎麼寫了
千萬不要自己手刻IOC
57
S2Container.NET
Ninject
58
IOC套件有胖有瘦
使用上有好有壞
使用前請詳閱公開說明書
60
61
? 本投影片所包含的商標與文字皆屬原著作者所有。
? 本投影片使用的圖片皆從網路搜尋。
? 本著作係採用姓名標示-非商業性-相同方式分享 3.0 台灣授權。閱讀本授權條款,
請到http://creativecommons.org/licenses/by-nc-sa/3.0/tw/,或寫信至Creative
Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.
Thanks

More Related Content

甚麼鬼的滨翱颁&补尘辫;顿滨