value objectについて質問です。
DDD本を読んでいて、オブジェクトはValue ObjectとEntity Objectに分けられ以下のように理解
しました。、
・Entity Object
・不変な識別(IDなど)できるものがあり
・その他の属性は変更可能
・ValueObject
・生成時のみ値を設定でき変更不可
・同じオブジェクトを生成できる。
この場合、例えばEntityObjectの属性にValueObjectがあった場合
そのValueObjectの変更は不可能だと思うのですが、入れ替えることも
できず、どうするのが良いのでしょうか?それとも使い方が間違っているのでしょうか?
+++++++++++++++++++++++++
以下思いつきで書いてみたので文法上間違いが多々あるかもわかりませんが、ソースコード書いてみました。
public class ValueObject
{
private int b;
ValueObject(int a)
{
b=a;
}
ValueObject multi(int a)
{
return new ValueObject(a*b);
}
ValueObject copy()
{
return new ValueObject(b);
}
}
public class EntityObject
{
private final int id;
private ValueObject vo;
EntityObject(int id,int value)
{
this.id=id;
vo = new ValueObject(30);
}
void setValue(int a)
{
//ここのやり方がわからない
}
ValueObject getValue()
{
return vo.copy();
}
}