iT邦幫忙

2022 iThome 鐵人賽

DAY 7
1

控制反轉 (IoC)&依賴注入(DI) 是 .NET Core 框架很重要的設計模式,剛開始在接觸 IoC/DI 時,看越多文章就越混亂,後來實際在運用後才慢慢了解其中的概念,這邊就用簡單的筆記跟大家聊聊。

IoC

好萊塢法則 => 不要給我們打電話,我們會給你打電話

IoC,是一種 設計原則,是 物件導向程式設計 中的一種設計原則,來降低類別或模組之間的耦合度。其中最常見的方式叫做依賴注入(Dependency Injection,簡稱DI)。

所以簡單來說

IoC 是概念,而 DI 是一種實作方法

  • Martin Fowler 在 2004 年提出
  • 把對於某個物件的控制權移轉給第三方容器
  • 藉由 分離組件 (Components) 讓雙方都倚賴第三方容器,來降低類別或模組之間的耦合度。

DI

被依賴物件注入被動接收物件

爬文的時候發現了一個很好的例子

小明是個愛乾淨的人,但他工作時常加班導致房間雜亂,他不能忍受此狀況,所以小明去找一個清潔阿姨每天幫忙他打掃家裡
哪天阿姨哪天有事不能打掃,小明就必須要再去找人來幫忙打掃,由此可知小明耦合阿姨

如果今天是....

小明把他要的條件給「打掃仲介公司」,仲介公司幫他尋找有沒有符合小明需求的打掃阿姨,假如今天A阿姨請假了,仲介公司會自動找另一個符合需求B阿姨幫忙打掃

原本小明依賴阿姨,現在被「仲介公司」做了控制反轉讓「仲介公司」來提供打掃阿姨。
今天小明不用管是否今天有人會來打掃,「仲介公司」會幫小明找到一個掃地阿姨。

「仲介公司」可看作 依賴注入容器
「小明」可看作 被動接收物件
「打掃阿姨」可看作 被依賴物件


實例依賴物件 的 『控制流程 (Control Flow)』,由 主動 變成 被動

就是 控制反轉 (Inversion of Control)


參考資料

那今天就到這邊囉,大家明天見!


上一篇
[Day06]-Serilog
下一篇
[Day08]- .NET Core MVC 架構規劃
系列文
ASP.NET Core 30 天旅程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言