IOCDI
【概述】
1.IOC(Inversion of Control):
即“反轉控制”,不是什么技術,而是一種設計思想。其思想是反轉資源獲取的方向。
傳統的資源查找方式要求組件向容器發起請求查找資源。作為回應,容器適時地返回資源。
而在應用了IOC之后,則是容器主動地將資源推送給它所管理的組件,組件所要做的僅是選擇一種合適的方式來接受資源。這種行為也被稱為查找的被動形式。
所謂IOC其實就是打破原有的由類自身創建對象改變為由容器來創建對象。IOC主要包含反轉(角色的反轉)和控制(對象的創建)兩個部分。
【猩生柯北舉栗子:就好像是以前買菜你需要親自提著菜籃子去菜市場買菜,而現在用了IOC后就不用親自去菜市場了了,你只需要將菜籃子放在家門口,菜就會自己到你的籃子里面。】
2.DI(Dependency Injection)--IOC的另一種表述方式:即組件以一些預定義好的方式(例如:setter方法)接受來自如容器的資源注入。相對于IOC而言,這種表述更加直接。
?
【示例】
class A{}
?
class B{
? ? ? ?private A a;
? ? ? ?public void setA(A a){
? ? ? ? ? ? ? ? ?this.a = a;
? ? ? }
}
需求:從容器中獲取B對象,并使B對象的a屬性被賦值為容器中A對象的引用。
傳統方式:
? ? ? ? ? ? ? ? ?
? A a = getA();? //獲取A
? B b = getB();? //獲取B
? b.setA(a);? ?//建立關聯關系
用IOC容器:
?B b = getB();
說明:用IOC容器后,容器通過setter方法自動把A對象的引用賦給了B對象的a屬性。
?
IOC發展:分離接口和實現(原始社會),工廠設計模式(封建社會),反轉控制(按需分配)。
?
轉載于:https://www.cnblogs.com/zhzcode/p/9579359.html
總結
- 上一篇: Vue---从后台获取数据vue-res
- 下一篇: scrapy的Middleware