関数による操作とドメインエンティティの操作
from リポジトリとグローバル変数
関数ならcopyの変更を返却して、関数を実行した側がswapする。
code:javascript
function doSomething() {
globalVar = modify(globalVar) // swap
}
function modify(localVar) {
copy = copyObject(localVar) // copy
copy.modify() // modify copy
return copy // return copy
}
ドメインエンティティの操作はcopyとmodifyとswapが同時に実行されると思ってもよい?
code:javascript
domainObject.doSomething() // execute method
// on domain object
fun doSomething() {
this.attributes = attributes.modify() // copy to modify to swap
}
// on value object
fun modify() {
copy = copyObject(this) // copy
... // modify copy
return copy // return copy
}
状態をもつドメインエンティティはドメインエンティティのクライアントがそのローカル変数あるいはグローバル変数をswapするのを肩代わりするとも言えそうか?クライアントはそのインスタンスが内部的な状態変化を起こすようにメッセージを送る。swapするというアプリケーションサービスの手続きを内部的な状態変化として捉え直す?
to ドメインエンティティはアプリケーションサービスの延長か