IoC:控制翻轉(zhuǎn) DI:依賴(lài)注入
控制翻轉(zhuǎn)是代碼復(fù)用的一種模式(注意不是設(shè)計(jì)模式)
一般(非IoC)的復(fù)用,通常是用戶(hù)代碼調(diào)用組件(任意形式的被復(fù)用的代碼,本答案中統(tǒng)稱(chēng)為組件)。也就是用戶(hù)代碼解決“Why it works, What to do”,組件解決“How to do”,邏輯的入口是用戶(hù)代碼, 而控制翻轉(zhuǎn)則是組件來(lái)調(diào)用用戶(hù)代碼,也就是組件解決“Why it works, When to do”,用戶(hù)代碼解決“What to do”,邏輯的入口是組件
下面是除了DI之外的控制翻轉(zhuǎn)的例子:
1.接口/虛函數(shù) 組件調(diào)用接口/虛函數(shù),具體由用戶(hù)代碼實(shí)現(xiàn)
2.發(fā)布訂閱(事件)模式 組件觸發(fā)事件,用戶(hù)代碼訂閱事件
3.回調(diào) 用戶(hù)代碼寫(xiě)回調(diào),組件來(lái)調(diào)用
4.幾乎所有能被稱(chēng)之為框架的東西 用戶(hù)代碼在規(guī)定的地方實(shí)現(xiàn)具體業(yè)務(wù)邏輯,剩下的框架負(fù)責(zé)