データ転送オブジェクト
原文: https://www.martinfowler.com/eaaCatalog/dataTransferObject.html
メソッド呼び出しを減らすためにプロセス間でデータを運ぶオブジェクト
解説の全文は『PofEAA』 401 ページを参照。
リモートファサード(388)のようなリモートインタフェースを使っているとき、そのインターフェースの各々の呼び出しは重いので呼び出す回数を減らさないといけない。つまり、1回の呼び出しでさらに多くのデータを渡さないといけないということだ。これを実現する方法の1つに、パラメータをたくさん使うという手がある。しかしながらこの方法ではしばしば問題を引き起こす——実際、1つの値しか返せないJavaのような言語ではこれは不可能だ。
これの解決案は、呼び出しに必要なデータを全て抱えられるようなデータ転送オブジェクトをつくることだ。このオブジェクトはコネクションを跨ぐためにserializableである必要がある。ここでAssemblerは通常DTOと任意のドメインオブジェクトの間でデータを転送するためにサーバサイドで使われる。
Sunコミュニティではこのパターンに「Value Object」という用語を使っている人たちがいっぱいいるけど、私はこの用語は別の意味で使う。詳しくは487ページの議論を見てくれ。
translated by money@andore.com