
you are here
433
11
章
Proxy
パターン
サ
ー
ビ
ス
オ
ブ
ジ
ェ
ク
ト
サーバヒープ
ク
ラ
イ
ア
ン
ト
オ
ブ
ジ
ェ
ク
ト
クライアントヒープ
ク
ラ
イ
ア
ン
ト
ヘ
ル
パ
ー
サ
ー
ビ
ス
ヘ
ル
パ
ー
例えば、ローカルオブジェクトを呼び出して、そのオブジェクトがリモートオブジェクトにリクエストを転送するよう
なシステムを設計したいとします。どのように設計すればよいでしょうか?
通信を行う
2
つのヘルパーオブジェクトが必
要です。このヘルパーにより、クライアントはローカルオブジェクトでメソッドを呼び出しているかのように振る舞うこ
とを可能にします。クライアントは、クライアントヘルパーが本物のサービスであるかのようにクライアントヘルパーの
メソッドを呼び出します。そして、クライアントヘルパーがそのリクエストを転送してくれます。
言い換えると、クライアントオブジェクトはリモートサービスのメソッドを呼び出していると思っているのです。クラ
イアントヘルパーはサービスオブジェクトのふりをしているからです。つまり、クライアントが呼び出したいメソッドを
持つオブジェクトのふりをしているのです。
しかし、クライアントヘルパーは実際にはリモートサービスではありません。クライアントヘルパーはリモートサービ
スのように振る舞いますが(リモートサービスが公開しているのと同じメソッドを持つため)、クライアントヘルパーに
はクライアントが期待するメソッドロジックはありません。代わりに、クライアントヘルパーはサーバと通信してメソッ
ド呼び出しに関する情報(メソッド名や引数など)を転送し、サーバからの応答を待ちます。 ...