問題タブ [bridge]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
design-patterns - ブリッジ パターンはいつ使用しますか? Adapter パターンとどう違うのですか?
実際のアプリケーションでブリッジ パターンを使用したことのある人はいますか? もしそうなら、あなたはそれをどのように使いましたか?それは私ですか、それとも依存関係の注入が少し混ざったアダプター パターンですか? それは本当に独自のパターンに値するのでしょうか?
design-patterns - プロキシ、デコレータ、アダプタ、およびブリッジパターンはどのように異なりますか?
私はプロキシパターンを見ていましたが、デコレータ、アダプタ、ブリッジパターンに非常によく似ているように見えます。私は何かを誤解していますか?違いは何ですか?なぜプロキシパターンを他のパターンと比較して使用するのですか?過去に実際のプロジェクトでそれらをどのように使用しましたか?
c# - Visitor/Bridge パターンの両側を拡張する
クラスの階層があるとします。古典的な例を使用しましょうShape
。
abstract class Shape
Circle : Shape
Square : Shape
さまざまな方法で形状のレンダリングを処理するレンダラー クラスの 2 番目の階層があります。
abstract class ShapeRenderer
HtmlShapeRenderer : ShapeRenderer
WindowsFormsShapeRenderer : ShapeRenderer
これらを個別に変更できるようにするには、従来、ブリッジ パターンを使用する必要がありました。クラスを変更せずにレンダリング アクションを拡張できるようにするには、Shape
従来、Visitor パターンが必要でした。
ただし、これらは両方とも、抽象化側ではなく、実装側の拡張のみに焦点を当てています。新しい を追加したいとします。Shape
たとえば、Triangle
のレンダリングもサポートできるようにしたいとしTriangle
ます。Visitor パターンと Bridge パターンの両方が、抽象化階層を一連のメソッドに「フラット化」することに依存しているため、次のようになります。
階層を拡張する唯一の方法Shape
は、基本クラスのコードを変更するShapeRenderer
ことです。これは重大な変更です。
ジョン、明確にするために:ブリッジまたはビジターを使用すると、クライアントは代替のレンダリング実装を提供できますが、潜在的なすべてのシェイプについて知る必要があります。私ができるようにしたいのは、クライアントがクラスを拡張できるようにし、新しいクラスのレンダリング実装を提供するようにクライアントに要求することです。このように、既存のコードは、レンダリングの詳細を気にすることなく、あらゆるタイプの で動作します。Shape
Shape
C# で使用できるこの種の問題に対する一般的な解決策はありますか?
design-patterns - ブリッジパターンとストラテジーパターンの違いは何ですか?
私はドファクトリー、ウィキペディア、そして多くのサイトで多くの記事を読んでみました。ブリッジパターンとストラテジーパターンの違いがわかりません。
私はそれらの両方が抽象化をその実装から切り離し、実行時に実装を変更できることを知っています。
しかし、どのような状況で戦略を使用すべきか、またはどのような状況でブリッジを使用すべきかはまだわかりません。
design-patterns - ブリッジパターンとアダプターパターンの違い
ブリッジパターンとアダプタパターンの違いは何ですか?
java - ブリッジパターンの例
ウィキペディアのこのブリッジ パターンの例にしばらく時間を費やしましたが、このブリッジ パターンが何を説明しようとしているのかまだわかりません。
サブクラスの CircleShape コンストラクターは 4 つの引数を取り、その draw() メソッドで、最初の 3 つの引数が 4 番目の引数に渡されます。これは DrawingAPI の任意のサブクラスにすることができます。これは、ブリッジ パターンを使用すると柔軟性が高まるということでしょうか。この例からわかることは他にもありますか?
ありがとう!!!!
c++ - ブリッジパターンとデコレータパターン
Bridge デザイン パターンと Decorator パターンを詳しく説明してくれる人はいますか。ある意味似ていると思いました。見分け方がわからない?
私の理解では、Bridge では、実装をインターフェイスから分離します。通常、適用できる実装は 1 つだけです。デコレーターはラッパーのようなもので、いくつでもラップできます。
例えば、
ブリッジパターン
デコレータ パターン
oop - ブリッジ パターン - 構成か集約か?
私はデザインパターンに関する本を何冊か読んでいますが、抽象化と実装の関係を構成として説明するものもあれば、それを集約として説明するものもあります。今、私は疑問に思います:これは実装に依存していますか? 言語で?それとも文脈?
c++ - C++でブリッジパターンを使用してIntStackを実装する
この質問は、「Thinking in C ++」Vol-1、第5章の演習No.14からのものです。
StackImpと呼ばれるクラスに要素を格納するために使用する低レベルのデータ構造を非表示にする「Cheshirecat」手法を使用して、StackOfIntクラス(intを保持するスタック)を作成します。StackImpの2つのバージョンを実装します。1つはintの固定長配列を使用し、もう1つはベクトルを使用します。スタックの最大サイズを事前に設定しておくと、最初のバージョンでアレイを拡張することを心配する必要がなくなります。StackOfInt.hクラスはStackImpで変更する必要がないことに注意してください。
これが私が作成したヘッダーファイル(StackOfInt.h
)です:
ただし、実装に関しては、配列とベクトルの違いを処理する方法について混乱しています。これが私がこれまでに思いついたものです:
私は間違った方向に進んでいると思いますが、誰かがこの問題を解決する方法についていくつかのヒントを教えてもらえますか?
c++ - サードパーティのライブラリ構造体を正しくラップする方法は?
私のプロジェクトでは、絶えず変化するサードパーティのライブラリを使用しています。このライブラリのラッパークラス(ブリッジパターン+ Pimplパターン)があります。したがって、ラッパーの実装を除いて、私のソースはどれもそのライブラリを認識していません。このライブラリにはOptions構造体があります。
これらのオプションを設定できるダイアログを作成するために、この構造体をGUIモジュールで使用できるようにしたいと思います。そのためのラッパー構造体を作成する必要がありますか?例えば
または、その構造体ヘッダーをソースに直接含める必要がありますか?
ラッパーの欠点は次のとおりです。コピー-貼り付け、構造体間で変換するための追加コード。直接の欠点は次のとおりです。単純なイディオムを破る。
この問題に対する他の解決策はありますか?
また、サードパーティのライブラリは絶えず変化していることを強調したいので、ライブラリのすべての新しいバージョンをサポートするためにソースを採用する必要があります。