【ブリッジパターン】

Bridgeパターン とは?

最終更新:
💡 リモコンの操作と機器の実装を分け、共通の接続口でつなぐ設計

利用者側の高水準の操作と、その処理を担う実装を分け、共通のインターフェースへの参照でつなぐ構造的デザインパターン。両側を別々に拡張しやすくし、組み合わせごとのクラスの増加を抑える。

📌 このページのポイント
Bridge:操作と実装を別々に拡張 操作側 実装側 Remote 機器への参照を持つ Device 共通の操作口 委譲 基本 拡張型 テレビ ラジオ 上向きの白三角:継承・実装の関係 共通インターフェースの約束が必要 機器にない機能まで自動で増えない
左右の階層は操作側と実装側。右向きは実装への参照と委譲、上向き白三角は下の型から上の共通型への関係を示す。具体的な機器は共通インターフェースに従い、リモコンとの組み合わせを作る。
ひよこ ひよこ
リモコンと機器の組み合わせごとにクラスが必要なの?
ペンギン先生 ペンギン先生
リモコンA・Bとテレビ・ラジオなら、組み合わせごとに4クラス作る設計も考えられるね。種類が増えるほど組み合わせも増える。Bridgeでは、リモコン側の操作と機器側の処理を分けて、その増加を抑えるんだ。
ひよこ ひよこ
どうやって分けるの?
ペンギン先生 ペンギン先生
リモコンが機器への参照を持ち、電源や音量などの操作を機器側へ委譲するよ。機器側には共通のインターフェースを用意し、テレビもラジオもそれに従う。リモコンは具体的な機器の内部処理に直接依存しにくくなるんだ。
ひよこ ひよこ
新しいリモコンや機器を自由に追加できる?
ペンギン先生 ペンギン先生
共通インターフェースの約束を保てれば、両側を別々に追加しやすいよ。ただし、機器にない機能まで自動的に使えるわけではない。共通の操作として何を提供するか、対応できない機能をどう扱うかは設計する必要があるんだ。
ひよこ ひよこ
Adapterパターンと似てる気がするけど、違うの?
ペンギン先生 ペンギン先生
参照を通じて処理を委ねる構造は似ることがあるよ。Adapterは合わない接続口を合わせること、Bridgeは別々に拡張したい2つの側を分けることが主な意図。作った時期だけで機械的に分類するものではないんだ。
ひよこ ひよこ
どんなときでも分ければよい?
ペンギン先生 ペンギン先生
描画の操作とOSごとの処理など、別々に変わる側があると役立つよ。一方、ほとんど一緒に変わる単純なクラスを分けすぎると、参照や階層が増えて複雑になる。独立して拡張したい理由があるかを考えよう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Bridgeパターン」って出てきたら「抽象と実装を分けて独立に進化させる設計」と思えばだいたいOK!
📖 おまけ:英語の意味
「Bridge Pattern」 = 橋渡しパターン
💬 抽象と実装の間に「橋」を架けて分離する様子からこの名前がついたんだよ

参考資料

← 用語集にもどる