具有不同成分的多个结构

时间:2016-11-13 08:49:43

标签: go struct

我有一个问题,我不确定如何在Go中解决。我需要创建一个与基于json的api进行对话的客户端。

所以我认为我会使用composition来构建类似于下面的结构。

type (
    BaseData struct {
        CommonFields string
    }

    Data struct {
        BaseData
        Result string
    }
)

现在我将数据结构发送到api并解组对结果的响应,到目前为止一切都很好。

现在的问题是我有不同的发送请求需要不同的“结果”组合,因此需要在同一个包中有许多Data结构的定义,这是不好的。

我很难看到应该怎么做。任何方向的指针都会很棒。

1 个答案:

答案 0 :(得分:0)

不要创建镜像或模仿您要使用的API的模型结构。 以对您的程序有意义的方式设计您的模型, 遵循DDD principles在高概念层面, 例如,在实施层面上SOLID principles

最有可能:

  • 您不需要外部API的所有功能。通过过多地坚持他们的结构,你将实现许多样板,在你的程序中没有任何目的。
  • 您不希望程序因外部API的微小变化而中断。

在程序中创建一个用于与外部API通信的图层, 并使您的程序的其余部分依赖于此层,而不是直接在外部API上。 这样,如果API中的某些内容发生变化,您只需要更改通信层,程序的其余部分就可以继续不受影响地工作。

在此通信层中,使用与API通信所需的任何结构。 不要使用任何不需要的结构。 并将这些结构转换为程序其余部分中使用的结构。 这可能涉及大量手动复制,一开始可能看起来不太好, 但这是保护程序免受外部变化影响的方法。