[解決済み] ProxyパターンとDecoratorパターンの違い
質問
とは何が違うのか、何か良い説明はないでしょうか? プロキシ と デコレーター ?
私が見た主な相違点は、私たちが以下を仮定したとき プロキシ が使用します。 コンポジション と デコレーター は アグリゲーション であれば、複数(1つ以上)の デコレーター では、既存のインスタンスを変更したり、機能を追加したりすることができます(デコレーション)。 プロキシ は、プロキシされるクラスの内部インスタンスを持ち、いくつかの追加機能 (プロキシの振る舞い) を追加してそれに委譲します。
問題は プロキシ アグリゲーションで作成されたものは、やはり プロキシ というか デコレーター ? GoFのパターンでは、定義上 プロキシ を集約しているのでしょうか?
解決方法は?
以下は、GoFからの直接の引用です(216ページ)。
<ブロッククオートデコレータはプロキシと似たような実装を持つことができますが、デコレータの目的は異なります。デコレータはオブジェクトにひとつまたは複数の責務を追加しますが、 プロキシはオブジェクトへのアクセスを制御します。
プロキシは、デコレータのような実装をどの程度行うかによって異なります。A 保護プロキシはデコレーターと全く同じように実装されるかもしれません。一方 一方、リモートプロキシは、実サブジェクトへの直接的な参照を持たず のような間接的な参照である。 最初はファイル名などの間接的な参照から始まりますが、最終的には を取得し、直接参照を使用する。
よくある回答は、Proxyはそのデリゲートの具象型を知っているというものです。この引用文から、それが常に正しいとは限らないことがわかります。
GoFによるとProxyとDecoratorの違いは、Proxyが 制限する クライアントが Decoratorはそうではありません。プロキシは、クライアントの する 機能へのアクセスを制御したり、クライアントが 知っている は、クライアントには見えないし、わからないアクションを実行することによって。Decoratorはその逆で、デリゲートが行うことをクライアントに見える形で拡張します。
Proxyはブラックボックスであり、Decoratorはホワイトボックスと言えるかもしれません。
ProxyとDecoratorを対比する際に、WrapperとDelegateの構成関係に注目するのは間違っています。wrapperとclientの関係こそが、この2つのパターンを区別するものなのです。
- Decoratorはクライアントに情報を提供し、力を与えます。
- プロキシはクライアントを制限し、無力化する。
関連
-
[解決済み] 関数デコレータを作成し、それらを連鎖させるには?
-
[解決済み] staticmethodとclassmethodの違いについて
-
[解決済み] MVPとMVC、その違いは何ですか?
-
[解決済み] メソッドと関数の違いは何ですか?
-
[解決済み] 静的クラスとシングルトンパターンの違い?
-
[解決済み] インターフェースと抽象クラスの違いは何ですか?
-
[解決済み】type()とisinstance()の違いは何ですか?)
-
[解決済み】Proxy、Decorator、Adapter、Bridgeの各パターンの違いとは?
-
[解決済み] 継承と集計の比較【終了しました
-
[解決済み] nullを返すのは設計ミス?[クローズド]
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 抽象メソッドと仮想メソッドの違いは何ですか?
-
[解決済み] インターフェースとベースクラス
-
[解決済み] ポリモーフィズムとは何か、何のためにあり、どのように使われるのか?
-
[解決済み】Proxy、Decorator、Adapter、Bridgeの各パターンの違いとは?
-
[解決済み】「結合度が低く、結合度が高い」とはどういう意味ですか?
-
[解決済み】依存関係逆転の原則とは何ですか、なぜそれが重要なのですか?
-
[解決済み】コンストラクターとファクトリーメソッドの比較【終了しました
-
[解決済み] プライベートとプロテクト-ビジビリティ・グッド・プラクティスの懸念点【終了しました
-
[解決済み] Facade、Proxy、Adapter、Decoratorのデザインパターンの違い?
-
[解決済み] コンストラクタをprivateにするとどうなるのですか?