IoC(控制反转)
在使用非 IoC 范式编程时,程序逻辑流程通常是由一个功能中心来控制。这个功能中心会调用各个可重用对象中的方法执行特定的功能
使用 IoC,这个 “中心控制” 的设计原则会被反转过来。调用者的代码处理程序的执行顺序,而程序逻辑则被封装在接受调用的子流程中
IoC 也被称为好莱坞原则,“不要给我们打电话,我们会打给你”
IoC 有几种不同的实现,包括工厂模式、依赖注入等
DI(依赖注入)
依赖注入是 IoC 的一种特定形态,主要好处有:
-
松耦合:
代码不再紧紧绑定到依赖项的创建上,而是使用从外部传入的对象 -
易测性:
可以把 mock 作为依赖项注入到对象中 -
高内聚:
代码可以专注于执行自己的任务,不用为载入和配置依赖性而分心 -
可重用:
别人想用你的 API,只需要注入他们定制的接口的你的实现类 -
更轻盈:
不需要跨层传递依赖项,可以在需要依赖项的地方直接注入
工厂模式的不足
- 虽然不用传递依赖项,但是还要传递引用凭据(objectType),即工厂创建的类型
- 还要调用 factory.getObject(objectType) 获取依赖项,达不到只关注自身职能的理想状态
网友评论