リモートファサード
ネットワーク上で効率を向上させるために、小粒なオブジェクトに粗粒なファサードを提供します。
詳細な説明については、EAA ページの388をご覧ください。
リモートファサードオブジェクト指向モデルでは、小さなメソッドを持つ小さなオブジェクトが最適です。これにより、制御と振る舞いの置き換えを行う機会が増え、優れたインテンションを表す名前を使用することでアプリケーションをより理解しやすくなります。このような小粒な振る舞いの結果の 1 つとして、オブジェクト間の相互作用が通常非常に多く、その相互作用には通常多くのメソッドの呼び出しが必要になります。
単一のアドレス空間内で、小粒の相互作用はうまく機能しますが、プロセス間で呼び出しを行う場合はこの好都合な状態は存在しません。リモート呼び出しは、行うべきことがさらに多いため、はるかにコストがかかります。データのマーシャリングが必要になる場合やセキュリティの確認が必要になる場合、またはパケットをスイッチを介してルーティングする必要がある場合があります。2 つのプロセスが地球の反対側のマシンで実行されている場合、光速が影響する可能性があります。プロセスが両方とも同じマシン上に存在する場合でも、プロセスの呼び出しはすべてプロセスの呼び出しよりも桁違いにコストがかかるという厳しい事実があります。このようなパフォーマンスの影響は、怠惰な最適化を信じている人であっても無視できません。
その結果、リモートオブジェクトとして使用されることを目的としたオブジェクトには、何かを行うために必要な呼び出しの数を最小限に抑える粗粒なインターフェイスが必要です。これによってメソッド呼び出しに影響が出るだけでなく、オブジェクトにも影響が出ます。注文とその注文明細を個別に要求するのではなく、単一の呼び出しで注文と注文明細にアクセスして更新する必要があります。これにより、オブジェクト構造全体に影響が出ます。小さなオブジェクトと小さなメソッドを使用して実現する明確な意図と小粒な制御をあきらめます。プログラミングはより困難になり、生産性が低下します。
リモートファサードは、粒の粗いオブジェクトのネットワークに対する粒の粗いファサード [Gang of Four] です。粒の粗いオブジェクトにはリモートインターフェースがなく、リモートファサードにはドメインロジックがありません。リモートファサードが行うのは、粒の粗いメソッドを実装された粒の細かいオブジェクトに変換することだけです。