問題タブ [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.

0 投票する
13 に答える
89697 参照

design-patterns - ブリッジ パターンはいつ使用しますか? Adapter パターンとどう違うのですか?

実際のアプリケーションでブリッジ パターンを使用したことのある人はいますか? もしそうなら、あなたはそれをどのように使いましたか?それは私ですか、それとも依存関係の注入が少し混ざったアダプター パターンですか? それは本当に独自のパターンに値するのでしょうか?

0 投票する
13 に答える
82607 参照

design-patterns - プロキシ、デコレータ、アダプタ、およびブリッジパターンはどのように異なりますか?

私はプロキシパターンを見ていましたが、デコレータ、アダプタ、ブリッジパターンに非常によく似ているように見えます。私は何かを誤解していますか?違いは何ですか?なぜプロキシパターンを他のパターンと比較して使用するのですか?過去に実際のプロジェクトでそれらをどのように使用しましたか?

0 投票する
4 に答える
1610 参照

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ことです。これは重大な変更です。

ジョン、明確にするために:ブリッジまたはビジターを使用すると、クライアントは代替のレンダリング実装を提供できますが、潜在的なすべてのシェイプについて知る必要があります。私ができるようにしたいのは、クライアントがクラス拡張できるようにし、新しいクラスのレンダリング実装を提供するようにクライアントに要求することです。このように、既存のコードは、レンダリングの詳細を気にすることなく、あらゆるタイプの で動作します。ShapeShape

C# で使用できるこの種の問題に対する一般的な解決策はありますか?

0 投票する
14 に答える
43548 参照

design-patterns - ブリッジパターンとストラテジーパターンの違いは何ですか?

私はドファクトリー、ウィキペディア、そして多くのサイトで多くの記事を読んでみました。ブリッジパターンとストラテジーパターンの違いがわかりません。

私はそれらの両方が抽象化をその実装から切り離し、実行時に実装を変更できることを知っています。

しかし、どのような状況で戦略を使用すべきか、またはどのような状況でブリッジを使用すべきかはまだわかりません。

0 投票する
11 に答える
65874 参照

design-patterns - ブリッジパターンとアダプターパターンの違い

ブリッジパターンとアダプタパターンの違いは何ですか?

0 投票する
2 に答える
5775 参照

java - ブリッジパターンの例

ウィキペディアのこのブリッジ パターンの例にしばらく時間を費やしましたが、このブリッジ パターンが何を説明しようとしているのかまだわかりません。

サブクラスの CircleShape コンストラクターは 4 つの引数を取り、その draw() メソッドで、最初の 3 つの引数が 4 番目の引数に渡されます。これは DrawingAPI の任意のサブクラスにすることができます。これは、ブリッジ パターンを使用すると柔軟性が高まるということでしょうか。この例からわかることは他にもありますか?

ありがとう!!!!

0 投票する
4 に答える
4500 参照

c++ - ブリッジパターンとデコレータパターン

Bridge デザイン パターンと Decorator パターンを詳しく説明してくれる人はいますか。ある意味似ていると思いました。見分け方がわからない?

私の理解では、Bridge では、実装をインターフェイスから分離します。通常、適用できる実装は 1 つだけです。デコレーターはラッパーのようなもので、いくつでもラップできます。

例えば、

ブリッジパターン

デコレータ パターン

0 投票する
3 に答える
2327 参照

oop - ブリッジ パターン - 構成か集約か?

私はデザインパターンに関する本を何冊か読んでいますが、抽象化と実装の関係を構成として説明するものもあれば、それを集約として説明するものもあります。今、私は疑問に思います:これは実装に依存していますか? 言語で?それとも文脈?

0 投票する
3 に答える
604 参照

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)です:

ただし、実装に関しては、配列とベクトルの違いを処理する方法について混乱しています。これが私がこれまでに思いついたものです:

私は間違った方向に進んでいると思いますが、誰かがこの問題を解決する方法についていくつかのヒントを教えてもらえますか?

0 投票する
2 に答える
315 参照

c++ - サードパーティのライブラリ構造体を正しくラップする方法は?

私のプロジェクトでは、絶えず変化するサードパーティのライブラリを使用しています。このライブラリのラッパークラス(ブリッジパターン+ Pimplパターン)があります。したがって、ラッパーの実装を除いて、私のソースはどれもそのライブラリを認識していません。このライブラリにはOptions構造体があります。

これらのオプションを設定できるダイアログを作成するために、この構造体をGUIモジュールで使用できるようにしたいと思います。そのためのラッパー構造体を作成する必要がありますか?例えば

または、その構造体ヘッダーをソースに直接含める必要がありますか?

ラッパーの欠点は次のとおりです。コピー-貼り付け、構造体間で変換するための追加コード。直接の欠点は次のとおりです。単純なイディオムを破る。

この問題に対する他の解決策はありますか?

また、サードパーティのライブラリは絶えず変化していることを強調したいので、ライブラリのすべての新しいバージョンをサポートするためにソースを採用する必要があります。