Domain driven design 复制核心域中的构造函数
我有一些域实体,它们在基础结构层中通过类进行扩展,以封装实现细节:Domain driven design 复制核心域中的构造函数,domain-driven-design,ddd-repositories,Domain Driven Design,Ddd Repositories,我有一些域实体,它们在基础结构层中通过类进行扩展,以封装实现细节: MyDomainEntity { List<SupportingDomain> children } SupportingDomain { ... } SqlSupportingDomain extends SupportingDomain { Long version } 当然,这种方法将基础结构细节泄漏到核心域(SqlSupportingDomain检查),这是不可取的 有人会如何处理这种情
MyDomainEntity {
List<SupportingDomain> children
}
SupportingDomain { ... }
SqlSupportingDomain extends SupportingDomain {
Long version
}
当然,这种方法将基础结构细节泄漏到核心域(SqlSupportingDomain检查),这是不可取的
有人会如何处理这种情况?是否有更好的方法将基础结构和域问题分开?您可以在SupportingDomain类中定义一个虚拟方法copy(),该方法返回实例的副本,然后在SqlSupportingDomain类中重写它,并在map函数中调用该方法。 这样,您就可以将复制逻辑封装在相应的类中,并避免强制转换
public MyDomainEntity(MyDomainEntity other) {
this.children = other.children.stream()
.map(d -> (d instanceof SqlSupportingDomain) ? new SqlSupportingDomain((SqlSupportingDomain) d) : new SupportingDomain(d))
}