5

プロキシとアダプタのパターンには類似点があるようですが?

違いは何ですか?なぜ両方が必要なのですか?.netの例では、プロキシのみを使用し、別の問題は使用しないでください。

ありがとうございました

4

2 に答える 2

16

プロキシは、非表示にするオブジェクトとまったく同じ動作を公開します。プロキシは通常、リモートオブジェクトへの接続方法を知らなくても、リモートオブジェクトに接続するために使用されます。例はWCFサービスです。これは、wcfサービスとまったく同じインターフェイスを公開するプロキシでサービスへのアクセスをカプセル化できますが、チャネルファクトリの使用や障害例外の処理などの実装の詳細を隠します...クライアントが話しているようですローカルでWCFサービスに接続します。

アダプタも基になるオブジェクトを非表示にしますが、アダプタと交換するデータを、基になるオブジェクトで使用される正しい形式とコンテンツに変換します。例は確かにゴブリンが言うようにレガシーシステムです。レガシーシステムとの通信の複雑さ(おそらく、おしゃべりなAPIまたはCRUDy APIを使用していて、大まかな操作の背後に隠したい場合)をアダプターにカプセル化して、レガシーシステムとクライアントとの簡単な通信方法を提供します。

それが私が少なくともそれを理解する方法です。

編集:ちなみに、私は個人的に、デザインパターン名をすべてを行うものとして見る必要はないと感じています。達成したいことに基づいて適切なパターンを選択し、それを好きなように呼んでください。

于 2010-09-22T08:17:42.137 に答える
7

プロキシは通常、次のシナリオで使用されます。

  • 基礎となる「実際の」オブジェクトの作成にはコストがかかります。次に、作成中にプロキシをプレースホルダーにします (巨大な画像をダウンロードする際のプログレスバー アイコンが典型的な例です)。遅延読み込みも典型的な例です。ユーザーが「詳細」ペインをクリックするかどうかわからないという考えです。そのため、ユーザーが実際にクリックするか、システムがアイドル状態になるまでロードを延期します。
  • プロキシ内の「実際の」オブジェクトの一部またはすべてのメンバーへのアクセス (SecurityProxy) を制御したい。

アダプターは別の役割を果たします。関係のない 2 つのクラス間のギャップを埋めます。アダプターは、両方のオブジェクトとして機能できます。これは主に、API を変更できないレガシー システム (またはサード パーティのフレームワーク) と統合する必要がある場合に使用されます。

お役に立てれば!

于 2010-09-22T07:23:01.197 に答える