Всем привет!
У меня возник вопрос по структурированию данных.
А точнее композиция VS наследование.
Допустим у меня есть типы, представляющие облачную инфраструктуру.
И есть тип Datastore представляющий некий конкретный инстанс базы данных.
Проблема появляется, когда в этот тип хочется добавить поля, специфичные для конкретного типа БД (например cassandra или mysql).
И тут два варианта:
1) использовать интерфейс, который определяет общие поля для всех. И конкретные типы, которые имплементируют этот интерфейс + дополнительные поля.
2) использовать один тип, но добавить к нему поле “data” которое будет Union и содержать специфичные детали
Ситуация осложняется тем, что у меня целая иерархия подобных объектов и для каждого типа нужны специфичные вариации.
Кто нибудь дизайнил подобное?