theme: cyanosis
highlight: an-old-hope
持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第4天,点击查看活动详情
控制反转的概念
IOC是面向编程中的一个设计原则,用来降低程序代码之间的一个耦合度。
控制反转和传统程序设计原则:
传统面向对象程序设计原则
在传统的面向对象编程中,获取对象的方式是用new关键字主动创建一个对象,也就是说应用程序掌握着对象的控制权。 - 举例: 当我们使用new创建了一个类,这个类依赖于某一个类。比如商品详情类依赖商品类。那么,我们在业务逻辑类中就应该先创建商品类和商品详情类,再将商品详情类主动注入到商品类。
IoC控制反转
IoC控制反转机制是指对象由IoC容器统一管理,当程序需要使用对象时,可以直接从IoC容器中获取。这样对象的控制权就从应用程序转移到了IoC容器,IoC设计原则借助于IoC容器实现具有依赖关系对象之间的解耦,各个对象类封装之后,通过IoC容器来关联这些对象类。 - 举例: 我们在IoC容器中创建一个A类,再查看该类是否有依赖对象要注入,如果有B类需要注入,则先创建B类,然后注入到A类。有IoC容器来管理这些对象的生命周期。当程序需要使用对象时,就可以直接获取了。因此在业务逻辑类就是直接从IoC容器中获取商品类。
依赖注入和控制反转:
依赖注入(DI)
依赖注入就是由IoC容器在运行期间动态的将某种依赖资源注入对象之中。 - 举例: 将对象B注入(赋值)给对象A的成员变量。依赖注入的基本思想是:明确地定义组件接口,独立开发各个组件,然后根据组件的依赖关系组装运行
比较
依赖注入和控制反转就是从不同角度来看待一件东西。 - 依赖注入是从应用程序的角度描述,即应用程序依赖IoC容器创建并注入它所需要的外部资源; - 控制反转时IoC容器的角度描述,由IoC容器反向地像应用程序诸恶u应用程序所需要地外部资源。