久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長資訊網
最全最豐富的資訊網站

angular學習之聊聊依賴注入

什么是依賴注入?本篇文章帶大家了解一下angular中的依賴注入(DI),詳細介紹一下AngularDI框架的兩個核心概念:注入器 Injectors和提供者 Provider,希望對大家有所幫助!

angular學習之聊聊依賴注入

angular中的依賴注入(DI)

1、概述

依賴注入 ( Dependency Injection ) 簡稱DI,是面向對象編程中的一種設計原則,用來減少代碼之間的耦合度。【相關教程推薦:《angular教程》】

class MailService {   constructor(APIKEY) {} }  class EmailSender {   mailService: MailService   constructor() {     this.mailService = new MailService("APIKEY1234567890")   }    sendMail(mail) {     this.mailService.sendMail(mail)   } }  const emailSender = new EmailSender() emailSender.sendMail(mail)

EmailSender 類運行時要使用 MailService 類,EmailSender 類依賴 MailService 類,MailService 類是 EmailSender 類的依賴項。

以上寫法的耦合度太高,代碼并不健壯。如果 MailService 類改變了參數的傳遞方式,在 EmailSender 類中的寫法也要跟著改變。

class EmailSender {   mailService: MailService   constructor(mailService: MailService) {     this.mailService = mailService;   } } const mailService = new MailService("APIKEY1234567890") const emailSender = new EmailSender(mailService)

在實例化 EmailSender 類時將它的依賴項通過 constructor 構造函數參數的形式注入到類的內部,這種寫法就是依賴注入。

通過依賴注入降了代碼之間的耦合度,增加了代碼的可維護性。MailService 類中代碼的更改再也不會影響 EmailSender 類。

2、DI 框架

Angular 有自己的 DI 框架,它將實現依賴注入的過程隱藏了,對于開發者來說只需使用很簡單的代碼就可以使用復雜的依賴注入功能。

在 Angular 的 DI 框架中有四個核心概念:

  • Dependency:組件要依賴的實例對象,服務實例對象

  • Token:獲取服務實例對象的標識

  • Injector:注入器,負責創建維護服務類的實例對象并向組件中注入服務實例對象(管理服務對象的創建和獲取)。

  • Provider:配置注入器的對象,指定創建服務實例對象的服務類和獲取實例對象的標識。(Provider:提供程序)

2.1 注入器 Injectors

注入器負責創建服務類實例對象,并將服務類實例對象注入到需要的組件中。

  • 創建注入器

    import { ReflectiveInjector } from "@angular/core" // 服務類 class MailService {} // 創建注入器并傳入服務類 const injector = ReflectiveInjector.resolveAndCreate([MailService])
  • 獲取注入器中的服務類實例對象

    const mailService = injector.get(MailService)
  • 服務實例對象為單例模式,注入器在創建服務實例后會對其進行緩存

    const mailService1 = injector.get(MailService) const mailService2 = injector.get(MailService)  console.log(mailService1 === mailService2) // true
  • 不同的注入器返回不同的服務實例對象

    const injector = ReflectiveInjector.resolveAndCreate([MailService]) const childInjector = injector.resolveAndCreateChild([MailService])  const mailService1 = injector.get(MailService) const mailService2 = childInjector.get(MailService)  console.log(mailService1 === mailService2) // false
  • 服務實例的查找類似函數作用域鏈,當前級別可以找到就使用當前級別,當前級別找不到去父級中查找

    const injector = ReflectiveInjector.resolveAndCreate([MailService]) const childInjector = injector.resolveAndCreateChild([])  const mailService1 = injector.get(MailService) const mailService2 = childInjector.get(MailService)  console.log(mailService1 === mailService2) // true

2.2 提供者 Provider

  • 配置注入器的對象,指定了創建實例對象的服務類和訪問服務實例對象的標識。

    const injector = ReflectiveInjector.resolveAndCreate([   { provide: MailService, useClass: MailService } ])
  • 訪問依賴對象的標識也可以是字符串類型

    const injector = ReflectiveInjector.resolveAndCreate([   { provide: "mail", useClass: MailService } ]) const mailService = injector.get("mail")
  • useValue

    const injector = ReflectiveInjector.resolveAndCreate([   {     provide: "Config",     useValue: Object.freeze({       APIKEY: "API1234567890",       APISCRET: "500-400-300"     })   } ]) const Config = injector.get("Config")

將實例對象和外部的引用建立了松耦合關系,外部通過標識獲取實例對象,只要標識保持不變,內部代碼怎么變都不會影響到外部。

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
欧美国产偷国产精品三区| 欧洲一级精品| 爽好多水快深点欧美视频| 91成人精品视频| 国产在线欧美| 国产一区日韩欧美| 一区二区视频欧美| 2023国产精品久久久精品双| 日韩视频不卡| 噜噜噜久久亚洲精品国产品小说| 欧美手机在线| 亚洲1234区| 欧美影院三区| 福利视频一区| 岛国av在线网站| 伊人久久在线| 欧美在线影院| 亚洲最新av| 久久国产麻豆精品| 乱一区二区av| 欧美三级网址| 尤物精品在线| 亚洲日本免费电影| 国产精品久久久亚洲一区| 精品亚洲a∨| 99久久亚洲精品| 中文精品在线| 日韩1区2区日韩1区2区| 精品一区二区三区在线观看视频| 日韩福利一区| 亚洲欧美日韩专区| 欧美另类中文字幕| 91亚洲一区| 性欧美长视频| 国产精品久久久久9999高清| 狠狠躁少妇一区二区三区| 1000部精品久久久久久久久| 中文视频一区| 国产精品xxx| 国产综合婷婷| 亚洲日产国产精品| 麻豆国产精品| 99国产精品| 国产精品一卡| 亚洲一本视频| 国产欧美一区二区三区精品观看| 肉色欧美久久久久久久免费看| 久久亚洲二区| 色爱综合网欧美| 亚洲小说春色综合另类电影| 黑人精品一区| 亚洲区第一页| 极品av在线| 亚洲91网站| 中文字幕系列一区| 日韩二区在线观看| 色黄视频在线观看| 日本不卡在线视频| 成人va天堂| 久久激情五月激情| 亚洲一级特黄| 国产精品第一国产精品| 欧美成人国产| 国产精品99久久免费观看| 91成人精品视频| 久久精品国产在热久久| 国产精品毛片一区二区三区| 久久精品国产网站| 男女激情视频一区| 中文字幕一区久| 国产精品综合| 欧美 日韩 国产精品免费观看| 国产精品美女久久久久久不卡| 婷婷综合亚洲| 国产一区二区三区四区二区| 综合色一区二区| 久久人人99| 美女视频网站久久| 少妇高潮一区二区三区99| 欧美日韩一二三四| 国产一区二区三区不卡视频网站| 亚洲另类av| 成人av二区| 国产精品久久观看| 欧美一级二级视频| 视频一区视频二区中文| 特黄毛片在线观看| 欧美国产专区| 日韩精选在线| 石原莉奈在线亚洲二区| 电影天堂国产精品| 国产成人免费精品| 国产日韩欧美中文在线| 蜜桃视频免费观看一区| 亚洲手机视频| 国产欧洲在线| 国产精品玖玖玖在线资源| 亚洲欧洲国产精品一区| 成人av动漫在线观看| 色一区二区三区| 激情不卡一区二区三区视频在线| 综合色一区二区| 亚洲综合精品四区| 日韩一区二区久久| 亚洲韩日在线| 久久精品av| 韩国精品主播一区二区在线观看 | 日韩一区二区三区精品| 伊人久久婷婷| 欧美精品黄色| 久久久久久久久久久妇女 | 国产偷自视频区视频一区二区| 亚洲1234区| 国产在线|日韩| 日本在线精品| 四虎4545www国产精品| www.九色在线| 成人在线黄色| 国产精品毛片一区二区在线看| 精品久久中文| 国产suv精品一区| 岛国精品一区| 97精品在线| 国产一区二区视频在线看| 欧美国产三级| 久久99高清| 久久久91麻豆精品国产一区| 国产精品欧美三级在线观看| 国产精品久久久久毛片大屁完整版| 欧美一区免费| 久久gogo国模啪啪裸体| 国产精品日韩精品在线播放| 国产高清日韩| 国产一区二区三区日韩精品| 日韩综合在线| 亚洲福利久久| 久久国产高清| 亚洲精品极品| 日韩高清不卡在线| 国产精品香蕉| 91一区二区三区四区| 久久久亚洲一区| 国产综合精品| 一区二区电影| 国产精品网站在线看| 国产成人a视频高清在线观看| 日韩成人精品一区| 久久精品国产大片免费观看| 亚洲资源av| 欧美亚洲国产日韩| 精品中国亚洲| 久久国产精品成人免费观看的软件| 欧美日韩激情在线一区二区三区| 91久久中文| 日韩精品免费视频人成| 国产日韩免费| av资源中文在线天堂| 精品欧美激情在线观看| 中文在线日韩| 精品视频一区二区三区在线观看| 精品免费av在线| 亚洲精品乱码久久久久久蜜桃麻豆| 日本va欧美va精品发布| 老司机精品在线| 久久久久久久久久久妇女 | 国产乱人伦精品一区| 成人午夜网址| 亚洲神马久久| 麻豆精品在线视频| 91精品综合| 色婷婷成人网| 激情国产在线| 亚洲精品日韩久久| 日韩成人精品一区二区| 亚洲在线观看| 精品在线网站观看| 性色一区二区| 精品国产精品久久一区免费式| 性欧美69xoxoxoxo| 久久wwww| 9色精品在线| 国产伦理一区| 不卡中文字幕| 久久麻豆视频| 性一交一乱一区二区洋洋av| 欧美激情在线精品一区二区三区| 99久久亚洲精品蜜臀| 国产欧美日韩综合一区在线播放| 91精品一区二区三区综合在线爱| 欧美日韩一区二区三区不卡视频 | 精品1区2区3区4区| 18国产精品| 女人天堂亚洲aⅴ在线观看| 国产精品三级| 美女精品一区| 欧洲一区二区三区精品| 91欧美极品| 激情91久久| 人在线成免费视频| 91成人在线网站|