我有一個顯示的API的概述對象,讓我們說,城市:模式在面向對象的方式
/cities
/city/{id}
的城市端點返回城市的概況(ID,城市名稱,城市區域),而城市端點返回相同加上一些(人口,圖像,縮略圖...)。現在,在客戶端模擬這種當我看到不同的選擇:
- 有其中有一個城市的子類,增加了額外的屬性的CityOverview類。
- 有一個City類,它具有CityOverview子類的所有屬性,該子類隱藏所有額外屬性(例如,在Java中,通過在所有獲取者上爲其所沒有的屬性拋出UnsupportedOperationException)。
- 讓上述類沒有繼承關係。
- 有一個City類允許所有額外的屬性爲零。
上述許可和/或任何其他您可以想到的優點和缺點是什麼?
因此,我個人選擇了目前的選擇1,但這是我正在尋找的那種討論。關於你的第一點,是的,我相應地發送父母或孩子的課程。這裏沒有真正的問題。第二點,我不明白。沒有字段是空的,因爲我只使用第二個端點上的子類。然後從選項3中獲得什麼? – bluehallu
我認爲我們差不多在同一頁面上。唯一不同的是,在第二點我說CityOverview是「不是」城市的父母。就OOPS而言,City和CityOverview共同組成「城市」實體。然後,如果沒有父子關係,而是兩個類之間的「關聯」,而CityOverview擁有城市的一個實例 - 這是第3點 - 但是既然您說City反正有CityOverview早些時候檢索到的所有字段,那麼我想第3點是不需要的。我將編輯解決方案以使其正確。 –