控制反转与依赖注入
根据马丁·福勒(Martin Fowler)的论文,控制反转是程序控制流反向的原理:外部源(框架,服务,其他组件)代替程序控制程序流,而由程序控制流它。就像我们将某些东西插入其他东西一样。他提到了有关EJB 2.0的示例: 例如,会话Bean接口定义了ejbRemove,ejbPassivate(存储到辅助存储)和ejbActivate(从被动状态恢复)。您不必控制何时调用这些方法,而可以控制它们的作用。容器给我们打电话,我们不给它打电话。 这导致框架和库之间的差异: 控制反转是使框架与库不同的关键部分。库本质上是您可以调用的一组函数,这些天通常组织成类。每个调用都会执行一些工作,并将控制权返回给客户端。 我认为,DI是IOC的观点意味着对象的依赖关系被颠倒了:与其控制自己的依赖关系,不如生命周期……还有其他事情为您服务。但是,正如您手动告诉我的那样,DI不一定是IOC。我们仍然可以拥有DI而没有IOC。 但是,在本文中(来自pococapsule,这是另一个C / C ++的IOC框架),它表明,由于IOC和DI,IOC容器和DI框架要优于J2EE,因为J2EE将框架代码混合到了组件中,因此不会使其成为普通的Java / C ++对象(POJO / POCO)。 除依赖注入模式以外的控制容器的反转(归档链接) 进一步阅读以了解旧的基于组件的开发框架有什么问题,这导致了上面的第二篇论文:控制反转的原因和内容(归档链接) 我的问题:什么是IOC和DI?我很困惑。基于pococapsule,IOC不仅仅是对象或程序员与框架之间的控制反转。