Koin - 一个基于Kotlin语言智能的依赖注入框架,让你专注于应用开发而不是工具使用。
依赖注入与控制反转
“依赖注入”(Dependency Injection)是Martin Fowler在2004年提出的关于“控制反转”的解释。Martin Flower认为“控制反转”一词让人产生疑惑,无法直白地理解“到底哪方面的控制被反转了”。所以Martin Flower建议采用“依赖注入”一词来代替“控制反转”。
“依赖注入”和“控制反转”其实是一个事务的两种不同说法而已,本质上是一回事。“依赖注入”是一个“控制反转”的特殊实现,但“依赖注入”还指一个对象应用另一个对象来提供一个特殊的能力。例如,把一个数据库连接以参数的形式传到一个对象的结构方法里,而不是在那个对象内部自行创建一个连接。“依赖注入”和“控制反转”的基本思想就是把类的依赖从类内部转到外部以减少依赖。利用“控制反转”,对象在被创建时,会由一个调控系统统一进行对象实例的管理,将该对象所依赖对象的引用通过调控系统传递给它。也可以说,依赖被注入到对象中。所以“控制反转”是关于一个对象如何获取它所依赖对象的引用的过程,而这个过程体现为“谁来传递依赖的引用”这个职责的反转。
Koin
Koin 是纯 Kotlin 编写的轻量级依赖注入框架,轻量是因为它只使用 Kotlin 的函数解析特性,没有代理,没有代码生成,没有反射。非常适合应用于Kotlin开发。