使用場景 has a關係中(這個場景在編程中太多了,使用別人的庫的時候,都要用到):
傳統的關係模式中,有has a的關係,也就是說,如果我有一個類,要包含其他的類。
這時候就可以使用這個設計模式。
爲什麼要用?
解耦合:不會因爲has a某個類的實例,這個類修改的時候,導致自己也要修改;
(解耦合的好處:可擴展,容易維護,單元測試)
1 vs singleton模式,同樣是對類的實例進行操作:
DI是爲了更加靈活的使用實例,而singleton是爲了共用和共享某個實例。
2 vs 構造函數的多態,同樣是把其他類的實例作爲參數傳遞進來:
DI是靈活使用has a關係的設計模式;
構造函數的多態主要用於從父類中構造出不同的子類,是面向對象的基礎概念;