- 原始社会里,几乎没有社会分工。需要斧子的人(调用者)只能自己去磨一把斧子(被调用者)。对应的情形为:Java程序里的调用者自己创建被调用者。
- 进入工业社会,工厂出现。斧子不再由普通人完成,而在工厂里被生产出来,此时需要斧子的人(调用者)找到工厂,购买斧子,无须关心斧子的制造过程。对应Java程序的简单工厂的设计模式。
- 进入“按需分配”社会,需要斧子的人不需要找到工厂,坐在家里发出一个简单指令:需要斧子。斧子就自然出现在他面前。对应Spring的依赖注入。
控制反转、依赖注入:
当某个角色(调用者)需要另外一个角色(被调用者)的时候,传统过程需要自己去调用被调用者,在spring中,创建被调用者的工作不需要调用者去实现,对调用者和被调用者没什么要求,完全支持对POJO之间依赖的管理,由Spring容器去实现,注入调用者。
总结:
IOC是通过反射机制来实现的,当我们需求改变的时候,工厂模式会需要修改进行相应的改变,而IOC反射机制不需要我们重新编译代码,因为它的对象都是动态生成的。
参考链接:https://blog.csdn.net/sunnyray0901/article/details/5915652