[解決済み】Proxy、Decorator、Adapter、Bridgeの各パターンの違いとは?
質問
Proxyパターンを見ていて、Decorator、Adapter、Bridgeパターンに酷似しているように思います。私は何かを誤解しているのだろうか?何が違うのでしょうか?なぜProxyパターンと他のパターンを使い分けるのでしょうか?実際のプロジェクトでは、過去にどのように使用したことがありますか?
どのように解決するのですか?
Proxy、Decorator、Adapter、Bridgeはすべて、クラスをquot;wrapping"するバリエーションです。 しかし、その使い方はさまざまです。
-
プロキシ は、オブジェクトのインスタンス化を怠ったり、 リモートサービスを呼び出していることを隠したり、 オブジェクトへのアクセスを制御したりしたい場合に使用します。
-
デコレーター は、スマートプロキシとも呼ばれます。これは、あるオブジェクトに機能を追加したいが、そのオブジェクトの型を拡張する必要はない場合に使用します。 これにより、実行時に機能を追加することができます。
-
アダプタ は、抽象的なインターフェースがあり、そのインターフェースを、似たような機能的役割を持ちながら、異なるインターフェースを持つ別のオブジェクトにマッピングしたい場合に使用します。
-
ブリッジ はAdapterと非常に似ていますが、抽象的なインターフェースと基盤となる実装の両方を定義することをBridgeと呼んでいます。 つまり、レガシーやサードパーティのコードに適応するのではなく、すべてのコードの設計者でありながら、異なる実装を交換できる必要があるのです。
-
ファサード は、1つまたは複数のクラスのサブシステムに対する、より上位の(より単純な)インターフェイスである。例えば、複数のオブジェクトを必要とする複雑な概念を表現するとします。このようなオブジェクトの集合に変更を加えると、どのオブジェクトが呼び出すべきメソッドを持っているのかが常に分からないため、混乱します。そんなときこそ、オブジェクトの集合体に対して行える複雑な操作のための高レベルなメソッドを提供するFacadeを書けばいいのだ。例:学校のセクションのためのドメインモデルで、以下のようなメソッドを持つ。
countStudents()
,reportAttendance()
,assignSubstituteTeacher()
といった具合です。
関連
-
[解決済み] 関数デコレータを作成し、それらを連鎖させるには?
-
[解決済み] MVPとMVC、その違いは何ですか?
-
[解決済み] Pythonの@propertyデコレーターはどのように機能するのでしょうか?
-
[解決済み】Proxy、Decorator、Adapter、Bridgeの各パターンの違いとは?
-
[解決済み】リレーショナルデータベースデザインパターン?[クローズド]
-
[解決済み】アンチパターンとは何ですか?
-
[解決済み】インターフェイスを作成するタイミングはどのように判断するのでしょうか?
-
[解決済み] ProxyパターンとDecoratorパターンの違い
-
[解決済み] Facade、Proxy、Adapter、Decoratorのデザインパターンの違い?
-
[解決済み] リポジトリとサービスの違い?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】FactoryとAbstract Factoryのデザインパターンの基本的な違いは何ですか?[クローズド]
-
[解決済み】リレーショナルデータベースデザインパターン?[クローズド]
-
[解決済み】ラッパークラスとは何ですか?
-
[解決済み】MVCにおけるビジネスロジック【終了しました
-
[解決済み] テンプレート方式とストラテジーパターンの違いは何ですか?
-
[解決済み] ProxyパターンとDecoratorパターンの違い
-
[解決済み] ブリッジパターンはどのようなときに使うのですか?Adapterパターンとどう違う?
-
[解決済み] BridgeパターンとAdapterパターンの違い
-
[解決済み] リポジトリとサービスの違い?
-
[解決済み] ゲームにおけるリプレイの概念的な仕組みについて教えてください。