У меня есть API, который показывает, скажем, город:Модель обзор объект в пути объектно-ориентированный
/cities
/city/{id}
городов конечная точка возвращает обзор города (ID, название города, город область), тогда как конечная точка города возвращает тот же плюс еще несколько (население, изображение, миниатюра ...). Теперь, когда вы моделируете это в клиенте, я вижу разные альтернативы:
- У вас есть класс CityOverview, в котором есть подкласс City, который добавляет дополнительные атрибуты.
- Есть класс City, который имеет все атрибуты с подклассом CityOverview, который скрывает все дополнительные атрибуты (скажем, в Java, путем исключения исключения UnsupportedOperationException на всех геттерах для атрибутов, которых у него нет).
- Имеют вышеуказанные классы без отношения наследования.
- Имейте один класс города, который позволяет использовать все дополнительные атрибуты.
Каковы плюсы и минусы вышеуказанных утверждений и/или любого другого, о котором вы можете думать?
Итак, я лично пошел с вариантом 1 на данный момент, но это та дискуссия, которую я искал. О вашей первой точке, да, и я отправлю родительский или дочерний класс соответственно. Здесь нет настоящей проблемы. Второй момент, я не понимаю. Никакие поля не пустые, потому что я использую только дочерний класс во второй конечной точке. Что я получу после варианта 3? – bluehallu
Я думаю, что мы почти на одной странице. Единственное отличие состоит в том, что в пункте 2 я говорю, что CityOverview «не» является родителем Города. Что касается OOPS, City и CityOverview вместе составляют сущность «Город». И тогда, если нет отношений между родителями и дочерними элементами, а скорее «ассоциация» между двумя классами с CityOverview с экземпляром City - это точка 3, но, поскольку вы сказали, что City anyways имеет все поля, полученные ранее в вызове CityOverview, тогда Я думаю, что пункт 3 не нужен. Я отредактирую решение, чтобы сделать его правильным. –