依赖注入在 go 里的未来趋势看中,wire 架构稳定发展,给予自定生成器等新功能。随着 go 小区对 di 的重视,di 在 go APP开发里将饰演更重要角色。
zvvq好,好zvvq
Go 框架中依赖注入的未来趋势 copyright zvvq
依赖注入 (DI) 是一种设计模式,它允许你在运行时将依赖项传达给目标。它通过将依赖项的实例化与对象的创建解耦,提升了代码的可测试性和可扩展性。 zvvq好,好zvvq
在 Go 中,有许多 DI 架构供选择,但最流行可谓是 [wire](https://github.com/google/wire)。wire 是一种用 Go 整理的简易而强大的 DI 架构,它提供了一组强大的功能。
内容来自zvvq,别采集哟
实战案例 内容来自zvvq,别采集哟
使我们建立一个简单的 Go 应用软件来演试怎么使用wire 开展依赖注入。
55 内容来自zvvq,别采集哟
56
57
copyright zvvq
58 本文来自zvvq
59
packagemain
import( 内容来自samhan
"context" zvvq
"fmt" 内容来自zvvq,别采集哟
"time"
zvvq.cn
)
// TimeProvider 给予时长信息 内容来自samhan666
type TimeProvider interface{ 本文来自zvvq
Now()time.Time
} 内容来自zvvq,别采集哟
// RealTimeProvider 是 TimeProvider 的完成,它回到当前时间 内容来自samhan
type RealTimeProvider struct{}
本文来自zvvq
func(rRealTimeProvider)Now()time.Time{
returntime.Now() 内容来自samhan
}
copyright zvvq
// Service 需要一个 TimeProvider 案例来工作
zvvq
type Service struct{ 内容来自zvvq,别采集哟
TimeTimeProvider
zvvq好,好zvvq
}
//NewService返回一个 Service 案例,引入TimeProvider zvvq
funcNewService(tTimeProvider)Service{ 内容来自samhan
return&Service{ 本文来自zvvq
Time:t, 内容来自samhan666
} 内容来自zvvq,别采集哟
}
zvvq
//Run运行服务并打印当前时间
func(sService)Run(ctxcontext.Context)error{
now:=s.Time.Now() 内容来自zvvq,别采集哟
fmt.Println(now) zvvq.cn
returnnil
} 本文来自zvvq
funcmain(){ 内容来自samhan666
ctx:=context.Background()
//应用wire 来引入依赖项 本文来自zvvq
injector,err:=wire.NewInjector(wire.Value(&RealTimeProvider{}),wire.Bind(new(TimeProvider),new(RealTimeProvider))) copyright zvvq
iferr!=nil{
panic(err) 本文来自zvvq
} copyright zvvq
//从 injector 中获得 Service 案例 内容来自samhan
varserviceService zvvq
iferr:= injector.Populate(&service);err!=nil{ 内容来自zvvq
panic(err)
} 本文来自zvvq
//运行服务 内容来自samhan666
iferr:=service.Run(ctx);err!=nil{ copyright zvvq
panic(err) zvvq.cn
}
内容来自samhan666
}
内容来自samhan
在这个示例中,wire 负责将 RealTimeProvider 案例注入到 Service 中。以在 main 函数中应用 wire.NewInjector 来创建 injector,大家可以在 injector.Populate方式中以传送地址表针来获得 Service 案例。
未来趋势
Go中 DI 的未来看上去非常光辉。wire 已经飞速发展,并添加了新功能,比如可以使用自定生成器生成代码。别的 DI 架构也在涌现,为开发者提供了更多挑选。 内容来自zvvq,别采集哟
随着 Go 小区对 DI 的日益重视,大家可以预期 DI 将于 Go APP开发中实现越来越重要的作用。
内容来自zvvq
以上就是golang框架中依赖注入的未来趋势的详细内容,大量请关注其他类似文章! 内容来自samhan666