依賴注入 DI

依賴注入 要結局的問題就是 我需要的類 全部通過注入的方式傳入進來 我們本身不需要創建出來。


image.png

如下圖 進行松耦合 productComponent有兩個相關的服務一個是 productService另一個是 AnotherproductService 我們消除了 productComponent和 productService的耦合 提高了productComponent的可重用性。

image.png
image.png

接下來 我們看一下 注入器和提供器

image.png
image.png

提供器不僅僅可以聲明在 AppComponent 中 同時可以聲明在 相應的 組件中
提供器的命名規則
1.當提供器聲明在模塊中時 ,所有的組件都可以注入它

  1. 當提供器聲明在組件中時 只對聲明它的組件和他的子組件可見 其他的組件是不可見狀態
    也就是其他的組件是不能使用的。
    3.聲明在組件和聲明在模塊中的服務有相同的tooken時,聲明在組件中的提供器會覆蓋聲明在模塊中的提供器。
    4.我們優先將提供器聲明在組件中。

服務的編寫 如下圖

image.png

@injectable的作用是 別的服務可以注入到此服務中
自動生成服務的命令行如下圖

image.png

我們使用服務工廠類給我們提供器
工廠方法創建的是單例對象


image.png

下面的圖片是將loggerService和 productService 結合起來了 效果和上面的一致

image.png

于此同時 ,我們可以在提供器中提供一個boolean類型的數據 此數據關聯到相應的productService上面。

image.png

此外 不僅僅可以提供一個值,同時可以提供一個對象等等的數據類型

image.png

對于我的productComponent組件 并不知道其他提供器的依賴關系 便可以使用一系列的服務了

image.png

將組件與服務的依賴關系 更加清晰 沒有多余的耦合。


二 . 注入器
注入器的層級關系
注入器主要就是通過構造方法注入的
或者是通過下方的注入方法注入

image.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容