我正在编写一个软件,该软件使用来自不同服务的API,并且方法将相同但执行不同。我想知道代码是否可以在接口中组织,或者我只是继续这样工作:type endPoint struct{ serverName string}func (this *endPoint) getLastDateURL () string{ if this.Name ="A"{ return "api.someAWebsite.com/getLastDate" } if this.Name ="B"{ return "api.someBWebsite.com/getLastDate" } return ""}func (this *endPoint) processData () output{ if this.Name ="A"{ //process in some way return } if this.Name ="B"{ //process in some different way return } return}我正在考虑的界面替代方案是关于这个的:struct endPoint interface{ getLastDateURL() processData()}...Do each method for each API providerHow would I use it then?我的最终目标是拥有可维护且干净的代码。老实说,我讨厌这样一个事实,即我必须为每个端点编写相同的方法来实现接口,但也许我还没有那么清楚的接口概念,或者在这种情况下使用接口几乎没有优势,再次,可维护和干净的代码的最终目标。
2 回答
湖上湖
TA贡献2003条经验 获得超2个赞
// "struct endPoint interface" is invalid, and signatures are missing their return types:
type endPoint interface{
getLastDateURL() string
processData() output
}
那我该如何使用它呢?
我无法给出一个完整的解决方案,因为你还没有展示你如何使用你目前的代码,但总的来说你会有:
实例化实现的东西 - 无论在当前实现中设置什么,都会创建一个具体类型实现的实例。NameendPoint
调用和/或的东西 - 而不是接收结构,它将接收接口值,然后不会关心底层实现是什么;它只会调用方法,就像今天一样getLastDateURLprocessData*endPointendPoint
我的最终目标是拥有可维护且干净的代码。
这可能是实现这一目标的好方法,但它取决于问题中未显示的上下文。
老实说,讨厌这样一个事实,即我必须为每个端点编写相同的方法来实现接口
您已经为每个端点编写了一个实现,只是将它们全部用相同的方法编写。你必须编写的代码量几乎是相同的,但生成的代码更干净,更有条理 - 例如,每个具体的实现都可以在自己的文件中,而不必全部使用相同的方法。对于许多/复杂的提供商,如果您需要更改当前解决方案或添加提供商,则导航起来变得越来越困难。
- 2 回答
- 0 关注
- 116 浏览
添加回答
举报
0/150
提交
取消