Как можно определить подклассы, когда они отправляются через http в Java / Spring? - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть системы:

  • Система A является устаревшей системой и не может быть запрограммирована
  • Система B должна потреблять объекты из системы A через REST

Система A имеет суперкласс Клиент и подклассы Частный клиент , Бизнес-клиент и Государственный клиент . Каждый из подклассов наследует атрибуты basi c от Customer и расширяет их собственные атрибуты.

Система A отправляет Customer как JSON в систему B. Система B не знает, является ли JSON частным Клиент, бизнес-клиент или государственный заказчик. Но для этого нужно создать Java объектов из них в нужном клиенте.

Одним из решений может быть создание кейса. Если указан класс c атрибуты присутствуют или нет. Но ни одно из значений не является обязательным. Кроме того, мне нужен какой-то проект, и создание таких конкретных c вариантов назначения не является хорошим дизайном программирования.

Есть ли для этого лучший метод?

1 Ответ

0 голосов
/ 02 апреля 2020

Если вы не можете обработать в своей новой системе класс B Customer, который имеет все возможные поля, и вам нужно / нужно различать Private Customer, Business Customer и Government Customer, тогда я думаю, что лучше всего сделать 3 различных конечных точки REST в системе, которые возвращают 3 различных класса в качестве типов результатов. Если вы хотите, вы можете сохранить в Системе B ту же структуру, что и родительские дочерние классы, только когда вы запрашиваете объекты из системы A, вы будете знать, что A вернет вам как тип.

Пример для сигнатур методов для конечных точек в проекте A:

Collection<PrivateCustomer> getPrivateCustomers(Filter filter)

Collection<BusinessCustomer> getBusinessCustomers(Filter filter)

Collection<GovernmentCustomer> getGovernmentCustomers(Filter filter)

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...