如何更优雅地管理依赖关系?

作者: bluntdel创建于 2019年12月2日更新于 2023年2月24日

我看到 main.go 中的这些代码: authorRepo := _authorRepo.NewMysqlAuthorRepository(dbConn) ar := _articleRepo.NewMysqlArticleRepository(dbConn) timeoutContext := time.Duration(viper.GetInt("context.timeout")) * time.Second au := _articleUcase.NewArticleUsecase(ar, authorRepo, timeoutContext) _articleHttpDeliver.NewArticleHttpHandler(e, au) 我认为如果 articleUcase 需要 articleRepo、articleAuthorRepo 以及其他更多的仓库,那么依赖管理将会非常糟糕,会产生许多类似 "newAriticleUseaCase(ARepo,BRepo,CRepo...) " 的代码。所以如果能够更优雅一点呢?我并不认为在 main.go 中写代码是一个好主意。

内容来源: bxcodec/go-clean-arch