国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

angular.js - 如何理解依賴注入?
PHP中文網(wǎng)
PHP中文網(wǎng) 2017-05-15 16:51:13
0
12
1477

網(wǎng)上搜了一下,感覺還是不能理解

PHP中文網(wǎng)
PHP中文網(wǎng)

認證0級講師

Antworte allen(12)
淡淡煙草味

依賴注入:程序運行過程中,如需另一個對象協(xié)作(調(diào)用它的方法、訪問他的屬性)時,無須在代碼中創(chuàng)建被調(diào)用者,而是依賴于外部容器的注入

下面這個例子可能更加有趣

理解依賴注入:

一個人(Java實例,調(diào)用者)需要一把斧子(Java實例,被調(diào)用者)

在原始社會里,幾乎沒有社會分工;需要斧子的人(調(diào)用者)只能自己去磨一把斧子(被調(diào)用者);對應(yīng)情形為:Java程序里的調(diào)用者自己創(chuàng)建被調(diào)用者,通常采用new關(guān)鍵字調(diào)用構(gòu)造器創(chuàng)建一個被調(diào)用者

進入工業(yè)社會,工廠出現(xiàn)了,斧子不再由普通人完成,而在工廠里被生產(chǎn)出來,此時需要斧子的人(調(diào)用者)找到工廠,購買斧子,無須關(guān)心斧子的制造過程;對應(yīng)簡單工廠設(shè)計模式,調(diào)用者只需定位工廠,無須管理被調(diào)用者的具體實現(xiàn)

進入“共產(chǎn)主義”社會,需要斧子的人甚至無須定位工廠,“坐等”社會提供即可;調(diào)用者無須關(guān)心被調(diào)用者的實現(xiàn),無須理會工廠,等待Spring依賴注入

總之依賴注入的意思是你需要的東西不是由你創(chuàng)建的,而是第三方,或者說容器提供給你的。這樣的設(shè)計符合正交性,即所謂的松耦合。

伊謝爾倫

個人理解,依賴注入是調(diào)用者僅通過聲明某個組件就可以獲得組件的控制權(quán),而對該組件的依賴關(guān)系管理、查找、加載由外部完成。

AngularJS中是由$injector進行這項工作。
比如,我在一個服務(wù)中注入了$http,并用hehe進行調(diào)用:

.service('myService',['$http',function(hehe) {
    this.getUserActivities = function(username){
        return hehe({
            method: 'JSONP',
            url:'https://api.github.com/users/'+username+'/events?callback=JSON_CALLBACK'
        });
    }
}])
洪濤

依賴注入就是你不用關(guān)心對象的生命周期,什么時候被創(chuàng)建,什么時候銷毀,只需直接使用即可,對象的生命周期由提供依賴注入的框架來管理。

世界只因有你

我補充一點:關(guān)于依賴注入和控制反轉(zhuǎn)其實是一個概念的。
@Wang_Bourne

http://www.cnblogs.com/kinglongdai/p/3269049.html
慕課網(wǎng):http://www.imooc.com/video/4907

劉奇

理論上理解總是有點談玄論道的感覺 推薦你看一些依賴注入的開源框架 比如RoboGuice 實踐出真知
sorry 走錯門了 沒有看分類 RoboGuice是android的框架 不過道理是一樣的

巴扎黑

依賴注入(Dependency Injection,DI)也叫也被稱為反轉(zhuǎn)控制(Inversion of Control, IoC),即將類和類、方法和方法之間的關(guān)系通過第三方(如配置文件)進行“注入”,不需要類或類方法自己去解決彼此間的調(diào)用關(guān)系。傳統(tǒng)應(yīng)用程序通常是在類內(nèi)部執(zhí)行代碼中主動創(chuàng)建這個類所依賴的其它對象,從而導(dǎo)致類與類之間發(fā)生緊密耦合,使得類難于測試和隔離,最終導(dǎo)致系統(tǒng)的擴展和維護異常困難。依賴注入用來解決組件之間依賴關(guān)系、配置及生命周期管理,通過轉(zhuǎn)移對象控制權(quán),可以解決類之間的耦合問題,對象與對象之間是松散耦合關(guān)系,更重要的是使得應(yīng)用程序體系結(jié)構(gòu)變得非常靈活,很好的體現(xiàn)了面向?qū)ο蟮脑O(shè)計法則之一—依賴設(shè)計原則,即著名的好萊塢原則:“Don’t call us, we’ll call you.(不要調(diào)用我們,我們會調(diào)用你)。

習(xí)慣沉默

angular.js 里面就很多這種思想。

包括 var net = require('net');

都醬紫的。

Peter_Zhu

依賴注入

其實就是說目前的對象所具有的特征屬性是依賴外部注入的對象的來決定的。
好比你家開個制鞋廠, 有個生產(chǎn)鞋的方法 make。

function shoes() {
    this.make = function() {
        ....
    }  
}

由于市場需要,有一些大牌運動鞋公司需要你們家工廠代工生產(chǎn),會給你一大包原材料,你們工廠拿到原材料生產(chǎn),然后貼牌即可。

    function shoes(material) {
        this.material = material;
        this.make = function() {
            ....
        }
    }

這樣,如果是 nike 需要你代工,給你 nike 家的材料對象,你就可以生產(chǎn)出 nike 家的運動鞋,adidas 家給你他們家的材料,你就可以生產(chǎn)出他們家的鞋子。

也就是你們家鞋廠生產(chǎn)的鞋子到底是 A 家還是 N 家的鞋子,是依賴于提供你材料的是 A 家還是 N 家。

劉奇

在面向?qū)ο缶幊讨校覀兘?jīng)常處理處理的問題就是解耦,程序的耦合性越低表明這個程序的可讀性以及可維護性越高??刂品崔D(zhuǎn)(Inversion of Control或IoC)就是常用的面向?qū)ο缶幊痰脑O(shè)計原則,使用這個原則我們可以降低耦合性。其中依賴注入是控制反轉(zhuǎn)最常用的實現(xiàn)。

具體訪問說說依賴注入

為情所困

非常簡單的個人理解,依賴注入其實并不難,是一件很自然的事情,現(xiàn)實生活其實比程序難:
依賴注入:你是一個人,你要去打獵,需要一把槍, 這個時候有兩個選擇,第一個選擇,你自己去造,顯然不可取,這就是強耦合。第二個選擇,你去商店里面買,這就是依賴注入,因為是從外面注入給你的,通過買,解除自己造的難題,通過注入,解除依賴。多簡單的事啊。
控制反轉(zhuǎn)準則:依賴于抽象,而不要依賴于具體的東西, 你去買槍的時候,你的腦海中要有這個槍的抽象概念,你只需要告訴槍店老板,這個槍在你腦海中的抽象形象就可以了。而且你是神創(chuàng)造的,神要測試一下你這個獵人的時候,神如果要給你去創(chuàng)造一把槍就比較麻煩,但是如果你的袋子里面有一張槍的說明書,那就好辦了,神分分鐘幫你弄出一把槍來。說得更土一點,不要去依賴具體的槍,而要去依賴槍的說明書,這就是控制反轉(zhuǎn)準則。很顯然,現(xiàn)實生活中,我們就是這樣去干的。
容器:相當于現(xiàn)實生活中的一個超級厲害的工廠,神(程序員)負責不斷的給他升級,一般都是bind, 你告訴他什么,他都可以幫你生產(chǎn),然后再免費送給你。所有的臟活累活,工廠都幫你干了,所在而你只負責在一邊,享受生活。這個工廠,是實現(xiàn)依賴注入的難度所在。

再進一步的理解,依賴注入,就等于,共產(chǎn)主義社會。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage