【ブリッジパターン】

Bridgeパターン とは?

💡 リモコンと家電を別々に設計して、どの組み合わせでも動かせる仕組み
📌 このページのポイント
Bridgeパターン:抽象と実装を分離 抽象レイヤー(Abstraction) 実装レイヤー(Implementor) RemoteControl (基底クラス) BasicRemote 基本リモコン SmartRemote スマートリモコン TV テレビ Radio ラジオ Bridge 独立して拡張可能 独立して拡張可能 抽象と実装をBridgeでつなぎ、組み合わせ爆発を防ぐ
Bridgeパターン:抽象(リモコン)と実装(機器)を橋渡し
ひよこ ひよこ

「リモコンA・B」と「テレビ・ラジオ」の全組み合わせをクラスで作ると大変そうだね!

ペンギン先生 ペンギン先生

それが「組み合わせ爆発」の問題だよ。2種のリモコン×2種の機器で4クラス、増えると一気に膨らんでしまうんだ。Bridgeパターンはその問題を解決してくれるよ。

ひよこ ひよこ

どうやって解決するの?

ペンギン先生 ペンギン先生

「抽象(リモコン)」と「実装(機器)」を別のクラス階層に分けて、リモコンが機器への参照を持つ形にするんだ。リモコンと機器を橋でつなぐイメージだよ。

ひよこ ひよこ

そうすれば新しいリモコンを追加しても、機器クラスを変えなくていいんだね!

ペンギン先生 ペンギン先生

正解!逆に新しい機器を追加するときもリモコンは変えなくていい。抽象と実装がそれぞれ独立して拡張できるのが最大のメリットだよ。

ひよこ ひよこ

Adapterパターンと似てる気がするけど、違うの?

ペンギン先生 ペンギン先生

Adapterは既存のインターフェースを合わせるための後付けの修正、Bridgeは最初から抽象と実装を分けて設計するアプローチだよ。設計の意図が違うんだね。

ひよこ ひよこ

最初から「分けて設計する」のがBridgeの考え方なんだね!

ペンギン先生 ペンギン先生

そう!グラフィック描画でWindowsLinuxの実装を切り替えるときとか、DBドライバを差し替えるときなんかによく使われるよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Bridgeパターン」って出てきたら「抽象と実装を分けて独立に進化させる設計」と思えばだいたいOK!
📖 おまけ:英語の意味
「Bridge Pattern」 = 橋渡しパターン
💬 抽象と実装の間に「橋」を架けて分離する様子からこの名前がついたんだよ
← 用語集にもどる