我有一个中央包,它提供了其他包所依赖的几个接口(让我们称之为一个Client)。那些其他包提供了这些第一个接口 ( UDPClient, TCPClient) 的几种实现。我Client通过调用NewClient中央包来实例化 a ,它从一个依赖包中选择并调用适当的客户端实现。
当我想告诉中央包有关其他包的信息时,这会崩溃,因此它知道它可以创建哪些客户端。那些依赖的客户端实现也会导入中央包,从而创建 Go 不允许的循环依赖。
最好的前进方向是什么?我不想将所有这些实现混合在一个包中,创建一个单独的注册表包似乎有点过分。目前,我将每个实现都注册到中央包中,但这要求用户知道将每个实现导入到每个使用客户端的单独二进制文件中。
import (
_ udpclient
_ tcpclient
client
)
慕哥6287543
相关分类