- 依賴注入是實現控制反轉的一種軟件設計模式,一個依賴是一個被其他對象(createShipment)調用的對象(服務),注入則是將被依賴的對象(product)實例傳遞給依賴對象(createShipment)的行爲。
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)
將依賴的控制權聰代碼的內部轉爲代碼的外部,側重描述目的
實現控制反轉的手段是依賴注入
- 注入器:每一個組件都有一個組件都有一個注入器實例負責注入組件需要的對象,服務類,一般不需要直接調用,自動通過構造函數注入進組件
constructor(private productService:ProductService)
//爲了讓注入器知道,指定的對象,需要提供器
//提供器:通過組件模塊的屬性聲明providers
providers:[ProductService]
providers;[{provide:ProductService,useClass:ProductService}]
providers:[{provide:ProductService,useClass:anothorProducxtService}]
providers:[{provide:ProductService,useFactory:() =>{...}}]
當提供器聲明在模塊中時,對所有組件可見,所有組件可以注入,聲明在組件中時,只對組件和子組件可見
優先將服務提供器聲明在模塊中
- 注入器的層級關係:
- 一個組件聲明瞭一個沒有參數的構造函數,這個組件沒有被注入任何東西
- angular裏只有構造函數注入方式
簡單的概念理解,還需要深入學習,不斷實踐