Angular依賴注入(6)

1.依賴注入
  • 依賴注入是實現控制反轉的一種軟件設計模式,一個依賴是一個被其他對象(createShipment)調用的對象(服務),注入則是將被依賴的對象(product)實例傳遞給依賴對象(createShipment)的行爲。
// 寫了一個方法,方法的參數是一個對象
//當調用方法需要實例化對象並傳遞給方法。
//New 一個商品的信息在裏面,調用createshipment方法,將product傳給
//createshipment方法依賴product類,但createshipment方法本省並不知道怎麼創建一個product
var product = new product();
createShipment(product)
  • 如果createshipment有三個參數,每個信息又有他自己的依賴,就會實例化很多對象
var product =new Product();
var shipCompany =new shipCompany();
var address=new Address();
var order =new Order();
order.setAddress(address);
createShipment(product,shipCompany,order);
  • 控制反轉:(inversion of control)
    將依賴的控制權聰代碼的內部轉爲代碼的外部,側重描述目的
    實現控制反轉的手段是依賴注入
2.優點
  • 鬆耦合,可重用
  • 提高了組件的可測試性
3.注入器提供器
  • 注入器:每一個組件都有一個組件都有一個注入器實例負責注入組件需要的對象,服務類,一般不需要直接調用,自動通過構造函數注入進組件
//注入器:
constructorprivate productServiceProductService{...}
//爲了讓注入器知道,指定的對象,需要提供器
//提供器:通過組件模塊的屬性聲明providers
providers:[ProductService]
providers;[{provide:ProductService,useClass:ProductService}]
providers:[{provide:ProductService,useClass:anothorProducxtService}]
providers:[{provide:ProductService,useFactory:() =>{...}}]
  • 提供器作用域規則:
當提供器聲明在模塊中時,對所有組件可見,所有組件可以注入,聲明在組件中時,只對組件和子組件可見
優先將服務提供器聲明在模塊中
  • 注入器的層級關係:
    這裏寫圖片描述
  • 一個組件聲明瞭一個沒有參數的構造函數,這個組件沒有被注入任何東西
  • angular裏只有構造函數注入方式
4.小結

簡單的概念理解,還需要深入學習,不斷實踐

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章