IOC 概念
IOC,本来是老外搞出来的一个词汇,人家英文的描述是 Inversion of Control,中文翻译呢是,控制反转。其实我觉得大多数人都是被这个词给坑了。
举个例子,有一个绑架案。说绑匪绑架了个一个千金小姐,需要小姐家人花钱赎身。在这个场景中,绑匪是控制着,控制着千金小姐的身家性命。但是呢,由于这个千金小姐,比较厉害,会武术。俗话说,女人会武术,神仙挡不住。那,咔咔,三下五除二,解决了绑匪。把所有的绑匪关入囚牢,等待官差的到来。那么,此时是不是控制发生了反转。由被控方,变成了控制方。整个过程,存在的交互,只是绑匪和千金小姐。在中国人的思维模式下,这种解释,才是真正的控制反转。
但,我们去了解 IOC 的实在内涵,完全不是这个意思。因此,建议大家忘记所谓的控制反转的翻译。个人觉得,可以理解为控制转移。就是绑匪失去了控制权。但是具体谁接受了控制权,有可能是小姐家人,有可能是官差,总归是第三方。
当然,后来出现的 DI(依赖注入)的解释,就是从另外一个层面去描述这个问题。我觉得理解下,我讲的上边的例子就够了。
IOC,就是将两个关联依赖的对象,不再由其中一个对象,完成另外对象的实例创建,而是,把这种创建,交付给第三方实现。这两个对象间,仅仅是交互即可,无需关心实例创建问题。维护的是,对象与对象间的关系,更符合自然世界中的对象含义。
蜜蜂采花蜜,应该是蜜蜂 、花,两个对象,采蜜的过程ÿ