首頁  >  文章  >  web前端  >  詳解Angular中的依賴注入模式

詳解Angular中的依賴注入模式

青灯夜游
青灯夜游轉載
2021-04-22 10:08:542956瀏覽

本篇文章為大家詳細介紹一下Angular中的依賴注入模式。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有幫助。

詳解Angular中的依賴注入模式

Angular 依賴注入模式

依賴注入: Dependency Injection 簡稱DI

#依賴注入模式要解決的問題

開發中, 會經常遇見物件的實例化, 當多個物件之間存在依賴時, 手動實例化會特別麻煩。

如果一個物件A要依賴物件 B, 那麼物件 A 就不需要明確地去實例化B對象, B 會由外部機制注入進來, 物件 A 只需要宣告一個B物件就行。這就是依賴注入要解決的問題。

與依賴注入經常同時出現的另一個概念叫做控制反轉

控制反轉: Inversion of Control 簡稱 IOC, 是指將依賴的控制權從程式碼的內部反轉到程式碼的外部。

依賴注入控制反轉是一體兩面,表達的是一個想法。 依賴注入著重於描述手段, 即如何實現控制反轉, 控制反轉著重於描述目的, 即目的是將依賴的控制權從程式碼的內部反轉到程式碼的外部。

相關教學推薦:《angular教學

依賴注入模式的好處

    ##松耦合,可重複使用
  • 提高元件的可測試性

Angular 如何實作依賴注入

##注入器

每個元件都有一個注入器實例, 負責注入元件所需的物件。注入器是 Angular 提供的一個服務類別。一般情況下不用直接呼叫注入器的方法, 注入器會自動透過元件的

建構子(constructor)

將元件所需的物件注入進組件。提供器會告訴注入器如何建立實例。

提供器

為了讓注入器知道注入的物件如何實例化,需要指定提供器,一般情況下,我們會透過元件或模組的providers 屬性聲明需要提供的對象。

一般宣告方式

providers:[{provide:AService, useClass: AServivce}] <=> providers:[AService]
provide 属性:指定了提供器的令牌(token)
useClass 属性:表示实例化方式是 new

工廠方法宣告方式

使用 useFactory 方式实例化对象
providers:[
  {
    provide:AService, 
    useFactory: (bService: BService) => {
      ....
    },
    deps:[BService] //deps声明工厂方法所依赖的服务。
    ]
工厂方法创建的对象是单例对象
在建構函式(constructor)中宣告的對象,會根據類別名稱去匹配提供者(providers)中的令牌(token),然後根據useClass 屬性的值去實例化指定的物件。

提供器注入規則

當一個提供者宣告在模組時,對所有元件都是可見的,所有元件都可以注入;
  • 當一個提供器宣告在元件時,只對宣告它的元件和子元件可見,其他元件不可見;
  • 當宣告在模組的提供器與宣告在元件的提供器具有相同token 時,宣告在元件的提供者會覆寫聲明在模組的提供器;
  • 一般情況下,我們都應該在模組中宣告提供者。
  • 更多程式相關知識,請造訪:
程式設計影片

! !

以上是詳解Angular中的依賴注入模式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除