术语全称:
Inversion of Control 、Dependency Injection
IoC建议直接理解为面向框架编程。控制反转,意思就是原本开发者可以自由设计程序结构和具体实现,以及各个变量的管理方式,但是这些现在全都交给框架来控制了。原本开发者是根据下层类设计上层类,现在反过来了,由框架来设计上层类,并暴露出上层类所依赖的抽象接口,开发者需要提供实现这些接口的下层类。
DI 是解耦合的一种实现方式。在编程时,需要面向抽象(父类、接口)编程,一个类依赖的其他类需要是抽象的,而当程序运行时必须为这些抽象类指定具体的实现类的实例对象,而当这个实例对象需要更改的时候,往往要改动多处代码,为了提高编程的灵活度、解耦合,提供了依赖注入这么个方式。以Spring为例,编程时不需要在Java代码中设置(new)实现类的实例,而是在配置文件中集中处理这些实例对象,然后通过注释(@Autowired、@Resource)和反射的方式为抽象类生成实例对象。这么做的另一个好处是所创建的实例对象都统一交由框架进行管理,由框架决定这些实例何时生成、何时销毁。
参考文章: