什么是依赖注入:
依赖注入就是new好了依赖的对象注入进去,而不是在类中显式的new一个依赖的对象
依赖注入的中心思想:
高层模块不应依赖于低层模块,他们都应该依赖于抽象
抽象不依赖细节,细节依赖抽象
依赖注入的分类:
- 构造器注入
- 属性注入
- 方法注入
话不多说,直接上例子(用类图讲解):
举例一个游戏,丈夫可以亲自己的妻子
1.1 经理说要改需求了:更改需求:男的也可以亲男的(上边是不用设计模式,下边是用设计模式)
1.2 经理又说游戏很火,但是需求不够丰富,还要改:更改需求:男的也可以亲自己的伴侣(包括猫和狗;上边是不用设计模式,下边是用设计模式)
这个例子可以很清楚的看出,如果需求不断的更改且一个类依赖多个类且依赖他们的抽象类,这样会导致测试很难而且代码很难维护。当使用了依赖注入设计模式后,会极大的降低耦合度,方便测试。但是,在实际应用中,我们通常需要实现一个容器去管理和实现依赖对象的注入,比如spring,xml等方式。