依赖注入、控制反转,这两个词天天用,但属于用了很多年真想讲出来不太好表达那种,结合网上资料总结下:
https://www.cnblogs.com/levontor/p/11040029.html
https://www.zhihu.com/question/23277575
一、依赖注入
依赖注入,就是把底层类传入上层类,三种注入方式
通过具体例子来体会二者的区别:“人与身份证的依赖关系”适合采用Setter注入,因为人不是一出生就有身份证,而是到了法定年龄才有,用构造函数注入表达的语义与此相违背。相反“人与父母的依赖关系”则适合采用构造函数注入,因为亲子关系是从人一出生就建立的,用Setter注入必然使得对象创建后有一段时间处于非法状态,按契约式设计的术语即破坏了对象的不变量(invariant)。
二、控制反转
控制反转就是将创建对象的控制权反转过来由容器创建,强调的是一种能力和思想。
可能反转不是中国人的语法习惯,听着很别扭,可能改成“”取消“”更好理解。