У меня есть существующая иерархия классов, скажем что-то вроде этого:
Business
- Division
- ProjectTeam
- Employee
Эти классы создаются с помощью десериализации.
Однако теперь мне нужно открыть дополнительные поля в Employee для конкретного пользователя библиотеки, то есть сказать что-то вроде этого:
SpecialBusiness (extends Business)
- Division
- ProjectTeam
- SpecialEmployee (extends Employee)
- Degree
Проблема в том, что я не могу просто создать класс, который расширяет класс «Бизнес», потому что я хочу добавить класс «Сотрудник».
На мой взгляд, у меня есть два варианта:
Дублируйте иерархию со специальными классами. Это означает, что каждый «Специальный» класс будет иметь коллекцию исходных классов и коллекцию новых «Специальных» классов.
SpecialBusiness
- Division AND SpecialDivision (extends Division)
- ProjectTeam AND SpecialProjectTeam (extends ProjectTeam)
- Employee AND SpecialEmployee (extends Employee)
- Degree
Каким-то образом введите «Employee» в «SpecialEmployee» во время выполнения для целей десериализации. Знайте, что я могу преобразовать все объекты Employee из SpecialBusiness в SpecialEmployee в кодовой базе (возможно, используя вспомогательные методы, чтобы сделать это очевидным).
Есть идеи как решить эту проблему?