Angular學(xué)習(xí)筆記(五)依賴注入等

依賴注入的好處主要是松耦合的方式編寫代碼,可測性和可重用性更高。

1.注入器

每個組件都有一個注入器實例負責(zé)注入組件需要的對象,注入器是angular提供的一個服務(wù)類,一般情況下你不需要直接調(diào)用注入器的方法,注入器會自動地通過組件的構(gòu)造函數(shù)將組件所需的對象注入進組件。

constructor(private productService: ProductService){...}

// tips: 控制反轉(zhuǎn) Inversion of Control 簡稱IOC 把依賴的控制權(quán)從代碼的內(nèi)部轉(zhuǎn)移到代碼的外部(代碼對外的依賴是由代碼的內(nèi)部決定的) 
1.側(cè)重于描述目的,把依賴的控制權(quán)從代碼的內(nèi)部轉(zhuǎn)移到代碼的外部
2.依賴注入側(cè)重于描述手段,實現(xiàn)如何控制反轉(zhuǎn)
實際上,Angular就是一個IOC容器

2.提供器

為了讓注入器知道需要被注入的對象如何實例化,需要指定提供器

providers:[ProductService]
// 它和下面這個寫法是一樣的
providers:[{ provide: ProductService, useClass: ProductService }]
// 使用useClass屬性具體實例化類
providers:[{ provide: ProductService, useClass: AnotherProductService }]
providers:[{ provide: ProductService, useFactory:() => {...} }]

// 提供器的作用域:
  // 1.當(dāng)一個提供器聲明在模塊時,它對所有組件可見,所有組件都可以注入該提供器(product1Component組件用的就是這個)
  // 2.當(dāng)一個提供器聲明在組件中時,它對當(dāng)前組件及其子組件可見,其他組件不可以注入。
  // 3.當(dāng)聲明在模塊的提供器和聲明在組件的提供器具有相同的token時,聲明在組件中的提供器會覆蓋聲明在模塊中發(fā)的提供器。
  // 4.一般情況下,優(yōu)先將服務(wù)提供器聲明在模塊中,只有某個服務(wù)提供器必須對某個組件可用且其他組件不可用時,將其聲明在組件中。

3.工廠方法

根據(jù)某些條件,決定實例化哪些對象;實例化對象時,調(diào)用對象的構(gòu)造函數(shù),需要傳遞參數(shù),這個時候使用工廠提供器

 useFactory 工廠提供器

4.注入器的層級關(guān)系

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,533評論 19 139
  • 版本:Angular 5.0.0-alpha 依賴注入是重要的應(yīng)用設(shè)計模式。它使用得非常廣泛,以至于幾乎每個人都稱...
    soojade閱讀 3,061評論 0 3
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,637評論 18 399
  • 一、什么是依賴注入 控制反轉(zhuǎn)(IoC) 控制反轉(zhuǎn)的概念最早在2004年由Martin Fowler提出,是針對面向...
    Keriy閱讀 3,569評論 0 8
  • Swiper(Swiper master)是目前應(yīng)用較廣泛的移動端網(wǎng)頁觸摸內(nèi)容滑動js插件。使用的次數(shù)越多,遇到的...
    愿你如夏日清涼的風(fēng)閱讀 6,685評論 0 1

友情鏈接更多精彩內(nèi)容