データ転送オブジェクト
メソッドの呼び出しを減らすために、プロセス間でデータを移動するオブジェクト。
詳しい説明については P of EAA ページ 401 を参照してください。
リモートファサード (388) などのリモートインターフェイスを使用する場合、それに対する各呼び出しが処理に負荷がかかります。その結果、呼び出しの数を減らす必要があり、つまり各呼び出しでより多くのデータを転送する必要があるということになります。これを実行する方法の 1 つは多数のパラメータを使用することです。しかしこれはプログラムする上でしばしば煩雑になり、実際、Java などの単一値しか返さない言語では不可能です。
解決策は、呼び出しのすべてのデータを保持できるデータ転送オブジェクトを作成することです。これは接続を介して送信できるように、シリアル化可能である必要があります。通常、サーバー側でアセンブラーを使用して、DTO とドメインオブジェクト間でデータを転送します。
Sun コミュニティの多くの人は、このパターンに「バリューオブジェクト」という用語を使用しています。私はそれを別の意味で使用します。487 ページの議論を参照してください。
データ転送オブジェクトを使用する主な理由は、複数のリモート呼び出しを単一の呼び出しにバッチ処理することですが、もう 1 つの利点として、有線でデータを転送するためのシリアル化メカニズムをカプセル化することが挙げられます。このようにシリアル化をカプセル化することで、DTO はこのロジックを他のコードから排除し、必要に応じてシリアル化を変更するための明確なポイントも提供します。
Sun/Java コミュニティの用語の使用法は、この本が出版されてから変更されています。彼らは「Transfer Object」がこのパターンの名前として使用されるようになりました。その結果、「Value Object」は私がこの本で説明している方法で定期的に使用されるようになりました。