题记:纯菜鸟,也在慢慢学习中。博客更主要是为了博主自己日后回顾复习,当然也欢迎大家指正。
原来校招时候,面试各种JAVA后台的时候刷过一道题——
思考:写段代码实现控制反转
当时的感觉自然是一脸懵逼——额,我连题目都闹不明白呢,咋实现呢?
【我是答案,不标准但差不多是这个意思】所谓控制反转,就是由其他外部实体将原来控制主体需要的成员等信息生成好提供给他,而不再是简单地去持有依赖对象的引用。主体对原来的内部对象不再由其静态地了解,而是由外部实体将依赖对象注入或者说提供给这个主体。显然,主体只需要自己需要什么类型的成员就可以了,至于具体依赖的是谁,不需要自己知道。 为什么这么做呢?直观地一点就是充分解耦,注入的对象的生命周期不再由控制主体决定了。
当然解耦不是说没耦合,你毕竟用到了其余的对象,还是相互联系的,只是这种静态关系变成动态的了,因为是函数运行时候注入的嘛,原来可是没关系的。另一点就是更加利于模块化调试了。你用不到这个依赖对象的时候,依赖对象实现的代码理论上随便改,可以热插拔,具体用到的时候再去提供给他就好。
学习完了这周我易的课程之后,根据老师所讲的“控制反转”一节有了一点思路和新的认识:
核心思想在于正常控制的主体(假设是A)不具有具体实例