控制反转的实现方式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了控制反转的实现方式相关的知识,希望对你有一定的参考价值。

参考技术A

实现数据访问层
数据访问层有两个目标。第一是将数据库引擎从应用中抽象出来,这样就可以随时改变数据库—比方说,从微软SQL变成Oracle。不过在实践上很少会这么做,也没有足够的理由未来使用实现数据访问层而进行重构现有应用的努力。
第二个目标是将数据模型从数据库实现中抽象出来。这使得数据库或代码开源根据需要改变,同时只会影响主应用的一小部分——数据访问层。这一目标是值得的,为了在现有系统中实现它进行必要的重构。
模块与接口重构
依赖注入背后的一个核心思想是单一功能原则(single responsibility principle)。该原则指出,每一个对象应该有一个特定的目的,而应用需要利用这一目的的不同部分应当使用合适的对象。这意味着这些对象在系统的任何地方都可以重用。但在现有系统里面很多时候都不是这样的。
随时增加单元测试
把功能封装到整个对象里面会导致自动测试困难或者不可能。将模块和接口与特定对象隔离,以这种方式重构可以执行更先进的单元测试。按照后面再增加测试的想法继续重构模块是诱惑力的,但这是错误的。
使用服务定位器而不是构造注入
实现控制反转不止一种方法。最常见的办法是使用构造注入,这需要在对象首次被创建是提供所有的软件依赖。然而,构造注入要假设整个系统都使用这一模式,这意味着整个系统必须同时进行重构。这很困难、有风险,且耗时。

IOC 控制反转IOC 简介 ( 依赖注入的两种实现方式 | 编译期注入 | 运行期注入 )





一、IOC 简介



IOC 是 Inversion Of Control 的缩写 , 控制反转 ;

其最主要的作用是 降低代码的耦合度 , 最常见的控制反转方式是 依赖注入 ( Dependency Injection - DI ) ;


IOC 核心原则 : 资源由 第三方 管理 , 不由 使用资源方 管理 ;


IOC 优点 :

  • 资源集中 : 资源集中管理 , 资源可配置 , 更加容易管理 ;
  • 低耦合 : 降低 了 使用资源方 和 提供资源方 的 耦合程度 ;
  • 可维护性 : 提高了程序的灵活性 , 更加容易维护 ;

IOC 缺点 :

  • 代码复杂 : 代码的 复杂程度提高 , 创建对象步骤更加复杂 ;
  • 性能降低 : 大量使用了 反射技术 , 执行过程中 损耗一定的性能 ; 相对于 提高的 灵活性 和 可维护性 , 性能损耗可接受 ;




二、依赖注入的两种实现方式



依赖注入实现 :

  • ① 编译期注入 : 如 XUtils 框架 ;

  • ② 运行期注入 : 如 ButterKnife 框架 ;


Android 开发中涉及到的 依赖注入的模块

  • ① 布局
  • ② 视图
  • ③ 事件

以上是关于控制反转的实现方式的主要内容,如果未能解决你的问题,请参考以下文章

控制反转和依赖注入的关系总结

Spring核心(ioc控制反转)

IOC 控制反转IOC 简介 ( 依赖注入的两种实现方式 | 编译期注入 | 运行期注入 )

[Js-Spring]Spring与IoC(控制反转,Inversion of Control)

控制反转,依赖注入

Java_Spring控制反转IoC(Inversion of Control)