我有一个显示的API的概述对象,让我们说,城市:模式在面向对象的方式
/cities
/city/{id}
的城市端点返回城市的概况(ID,城市名称,城市区域),而城市端点返回相同加上一些(人口,图像,缩略图...)。现在,在客户端模拟这种当我看到不同的选择:
- 有其中有一个城市的子类,增加了额外的属性的CityOverview类。
- 有一个City类,它具有CityOverview子类的所有属性,该子类隐藏所有额外属性(例如,在Java中,通过在所有获取者上为其所没有的属性抛出UnsupportedOperationException)。
- 让上述类没有继承关系。
- 有一个City类允许所有额外的属性为零。
上述许可和/或任何其他您可以想到的优点和缺点是什么?
因此,我个人选择了目前的选择1,但这是我正在寻找的那种讨论。关于你的第一点,是的,我相应地发送父母或孩子的课程。这里没有真正的问题。第二点,我不明白。没有字段是空的,因为我只使用第二个端点上的子类。然后从选项3中获得什么? – bluehallu
我认为我们差不多在同一页面上。唯一不同的是,在第二点我说CityOverview是“不是”城市的父母。就OOPS而言,City和CityOverview共同组成“城市”实体。然后,如果没有父子关系,而是两个类之间的“关联”,而CityOverview拥有城市的一个实例 - 这是第3点 - 但是既然您说City反正有CityOverview早些时候检索到的所有字段,那么我想第3点是不需要的。我将编辑解决方案以使其正确。 –