最好理解原概念的链接
使用场景 has a关係中(这个场景在编程中太多了,使用别人的库的时候,都要用到):
传统的关係模式中,有has a的关係,也就是说,如果我有一个类,要包含其他的类。
这时候就可以使用这个设计模式。
爲什么要用?
解耦合:不会因爲has a某个类的实例,这个类修改的时候,导致自己也要修改;
(解耦合的好处:可扩展,容易维护,单元测试)
1 vs singleton模式,同样是对类的实例进行操作:
DI是爲了更加灵活的使用实例,而singleton是爲了共用和共享某个实例。
2 vs 构造函数的多态,同样是把其他类的实例作爲参数传递进来:
DI是灵活使用has a关係的设计模式;
构造函数的多态主要用于从父类中构造出不同的子类,是面向对象的基础概念;