У меня есть доменные объекты, которые расширены классами на уровне инфраструктуры для инкапсуляции деталей реализации:
MyDomainEntity {
List<SupportingDomain> children
}
SupportingDomain { ... }
SqlSupportingDomain extends SupportingDomain {
Long version
}
У меня есть необходимость в глубоком копировании MyDomainEntity, что-то вроде этого:
public MyDomainEntity(MyDomainEntity other) {
this.children = other.children.stream()
.map(d -> (d instanceof SqlSupportingDomain) ? new SqlSupportingDomain((SqlSupportingDomain) d) : new SupportingDomain(d))
}
Конечно, при таком подходе информация об инфраструктуре просачивается в основной домен (проверка SqlSupportingDomain), что нежелательно.
Как кто-то может справиться с такой ситуацией?Возможно, есть лучший подход для разделения инфраструктуры и проблем домена?