ブリッジパターンとアダプタパターンの違い 質問する

ブリッジパターンとアダプタパターンの違い 質問する

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

ベストアンサー1

「アダプタは、設計された後に動作するようにし、ブリッジは、設計された前に動作するようにする。」[GoF、p219]

事実上、アダプタパターンは、サードパーティ製または社内製の既存のコードがあり、それを制御できない場合、または必要なインターフェイスに合わせて変更できない場合に役立ちます。たとえば、終末兵器の優れた配列を制御できる SuperWeaponsArray があります。

public class SuperWeaponsArray {
  /*...*/

  public void destroyWorld() {
    for (Weapon w : armedWeapons) {
      w.fire();
    }
  }
}

素晴らしい。ただし、武器インターフェースへの変換よりずっと前から核兵器が備わっていることに気付きました。しかし、ここでそれを機能させたいので、どうすればいいでしょうか...それを押し込むのです!

NukeWeaponsAdaptor - Nuke クラスに基づいていますが、Weapon インターフェースをエクスポートします。すばらしい、これで確実に世界を破壊できます。ちょっとした不格好なようですが、これでうまくいきます。


パターンは事前に実装するものです。2 つの直交する階層があることがわかっている場合は、インターフェイスと実装を分離して、クラスの数が異常に多くならないようにする方法が提供されます。次のようなものがあるとします。

MemoryMappedFile および DirectReadFile タイプのファイル オブジェクト。さまざまなソース (Linux と Windows の実装など) からファイルを読み取れるようにしたいとします。Bridge を使用すると、次のような事態を回避できます。

MemoryMappedWindowsFile MemoryMappedLinuxFile DirectReadWindowsFile DirectReadLinuxFile

おすすめ記事