12

Bridgeパターンとその意図を学びました。抽象化をその実装から分離して、2 つが独立して変化できるようにします

しかし、なぜAbstractFactory同じことをすることができなかったのでしょうか?

が特定のブリッジを作成できることは知っていますが、私の質問は、抽象化と実装を分離するための の代わりのAbstractFactory使用に関するものです。AbstractFactoryBridge

AbstractFactoryBridgePatternの本当の違いを教えてください。

4

3 に答える 3

4

まず、私が読んだブリッジパターンは、クラスとその機能の両方が頻繁に変化する場合に適しています。クラス自体は実装と見なすことができ、クラスの動作は抽象化と見なすことができます。

一方、Abstract Factory は、具体的なクラスを指定せずに、関連オブジェクトまたは依存オブジェクトのグループを作成するためのインターフェイスを提供します。それらの実装に関する懸念。

要約すると、あなたはリンゴとオレンジを比較しており、おそらくそれが混乱の元になっていると思います. それらはさまざまな問題を解決するためのものです。

私にとって、操作はJavaのメソッドを意味するため、操作は抽象化によって定義または宣言されますが、クラス自体に実装されます。そうです、抽象化は動作に関して操作ができることを宣言しているだけですが、実際の実装はクラスで行われます。また、Abstract Factory も正しいです。

ブリッジの定義部分は、1 つの抽象化に対して異なる抽象化のセットを持つことができるということだと思います。

デザイン パターンでは、抽象化という言葉を使用して、一連の抽象操作に依存するクラスを指します。ここでは、一連の抽象操作のいくつかの実装が可能です。

詳細については、次のリンクを参照してください。

Java での抽象化と Bridge パターンの使用

ウィキペディア: Bridge_Pattern

Java のブリッジ パターン

ブリッジパターン デザインパターン

于 2011-10-09T01:53:53.273 に答える
3

違いはほとんどなく、両方を比較することはできません。

  1. Abstract Factoryは、オブジェクトの作成を扱う作成設計パターンです。ブリッジ構造設計パターンであり、クラスの構造と構成を扱います。

  2. Bridgeでは、抽象化と実装は個別に異なります。しかし、abstract factory では、抽象化 (インターフェース) を変更すると、クライアントを変更する必要があります。

abstract_factoryパターンの使用例:

  1. システムで複数の製品ファミリを作成する必要がある場合、または実装の詳細を公開せずに製品のライブラリを提供したい場合。

チェックリスト:

  1. 「プラットフォームの独立性」と作成サービスが現在の悩みの種であるかどうかを判断します。
  2. 「プラットフォーム」と「製品」のマトリックスを作成します。
  3. 製品ごとのファクトリ メソッドで構成されるファクトリ インターフェイスを定義します。
  4. new 演算子へのすべての参照をカプセル化する各プラットフォームのファクトリ派生クラスを定義します。
  5. クライアントは new へのすべての参照を廃止し、ファクトリ メソッドを使用して製品オブジェクトを作成する必要があります。

ブリッジパターン:

次の場合に使用します。

  1. 実装の実行時バインディングが必要な場合、
  2. 結合されたインターフェースと多数の実装からのクラスの増殖があり、
  3. 複数のオブジェクト間で実装を共有したい場合、
  4. 直交クラス階層をマップする必要があります。

関連する SE の質問:

ブリッジ パターンは抽象化を実装から切り離しますか?

Factory パターンと Abstract Factory パターンの基本的な違いは何ですか?

さまざまな設計パターンの詳細については、このジャーナル開発記事とソース作成記事をご覧ください。

于 2016-01-28T16:29:32.433 に答える
2

はい。それらは似ています。AF は、オブジェクトのファミリを作成するために使用されます。一方、ブリッジは動作に関するものであり、アルゴリズムとプラットフォーム間の疎結合も可能にします。

例: Ping と Traceroute を使用してネットワーク診断用のプログラムを開発するとします。異なるプラットフォームではコマンドが異なります。抽象ファクトリを使用して、任意のプラットフォームの ping または traceroute のインスタンスを取得できます。それだけではありません。Bridge を使用すると、AF から返される ping および trace コマンドを使用して、より高度なアルゴリズムを開発できます。プラットフォームに応じて ping と traceroute の異なるシーケンスを使用できるアルゴリズムは、ブリッジ パターンを使用してプラットフォーム固有の実装の詳細から抽象化できます。

于 2015-08-05T05:52:39.317 に答える