如何删除值对象中的值对象 [DDD]
How to remove Value Object within Value Object [DDD]
我有一个关于 DDD 的问题。
如何删除 VO 中的 VO?
所以我有聚合 x 和 VO y。
在 VO y 中有一个 VO z 列表。 zListVO
现在我想从聚合中删除一个 zVO。
我可以做吗:(应用层的方法)
public void main
{
y.remove(zVO z)
}
汇总 X
private void Handle(RemovedZDE z)
{
this.x.remove(z.z);
}
然后在 VO Y 中创建一个方法,从他们的 VO 列表中删除 z ?
ClassyVO
protected void Remove(zVO z)
{
zListVO.remove(z);
}
通常,值对象模式的实例是不可变的;您通常没有命令(在 CQS 意义上),只有查询。
因此,更常见的是
new_y = old_y.remove(z)
I have aggregate x with a VO y. In VO y there is a list of VO z. zListVO
基本思路如下:
X::remove(Z z) {
old_y = this.y
new_y = old_y.remove(z)
// X is an entity, so we normally update its state directly
this.y = new_y
}
Y::remove(Z z) {
old_list = y.zListVO
new_list = old_list.remove(z)
// Y is a value, so we create a new value to describe
// the change
return new Y(new_list)
}
我有一个关于 DDD 的问题。 如何删除 VO 中的 VO? 所以我有聚合 x 和 VO y。 在 VO y 中有一个 VO z 列表。 zListVO
现在我想从聚合中删除一个 zVO。
我可以做吗:(应用层的方法)
public void main
{
y.remove(zVO z)
}
汇总 X
private void Handle(RemovedZDE z)
{
this.x.remove(z.z);
}
然后在 VO Y 中创建一个方法,从他们的 VO 列表中删除 z ?
ClassyVO
protected void Remove(zVO z)
{
zListVO.remove(z);
}
通常,值对象模式的实例是不可变的;您通常没有命令(在 CQS 意义上),只有查询。
因此,更常见的是
new_y = old_y.remove(z)
I have aggregate x with a VO y. In VO y there is a list of VO z. zListVO
基本思路如下:
X::remove(Z z) {
old_y = this.y
new_y = old_y.remove(z)
// X is an entity, so we normally update its state directly
this.y = new_y
}
Y::remove(Z z) {
old_list = y.zListVO
new_list = old_list.remove(z)
// Y is a value, so we create a new value to describe
// the change
return new Y(new_list)
}