关于 Go 的一些思考

关于 Go 的一些思考

Go 与依赖注入

依赖注入(Dependency Injection,简称 DI)是一种设计模式,它的主要目的是将对象的创建和对象之间的依赖关系的解析过程从应用程序代码中分离出来,交由框架或容器来管理(或者自己管理),从而降低代码复杂度。

摘自 https://www.zhihu.com/question/265433666

在 Java 的世界中,工程师] 习惯于在写任何类型实现之前,都先定义一下类型所实现的接口,即便可能超过 80% 的情况下,相应的接口只有唯一的一个实现。

需要为唯一的一个实现定义接口(以避免在替换实现时大幅修改代码),这实际上是来自语言的特性的限制;要使用依赖注入,实际上也可以不通过接口注入,而直接注入具体类型的。

Go 的接口可以迟于 struct 实现来定义这一独一无二的语言特性,使得我们在使用依赖注入的时可以先方便的注入具体类型;而在后续需要扩展为“接口”,提供多个实现的时候,无需修改模块代码!

可以说,Go 与依赖注入范式是相当绝妙的搭配。