#MOC [[🗃️デザインパターン]]の一つ。 機能を拡張するための階層と、実装を拡張するための階層を分離して、拡張を用意にするパターン。 ## 例 テレビとリモコンの例。 ブリッジパターンを使用すると、テレビのモデルやメーカーとは無関係にリモコンを設計したり、逆にリモコンの設計に関係なくテレビを設計することができる。 ```mermaid classDiagram Remote <|.. BasicRemote BasicRemote <|-- AdvancedRemote Device <|.. Radio Device <|.. Tv BasicRemote o-- Device : has AdvancedRemote o-- Device : has class Remote{ +void power() +void volumeUp() +void volumeDown() +void channelUp() +void channelDown() } class BasicRemote{ -Device device +void power() } class AdvancedRemote{ +void mute() } class Device{ +boolean isEnabled() +void enable() +void disable() +void setVolume(int volume) } class Radio{ // Device methods implementation... } class Tv{ // Device methods implementation... } ``` ```php interface Remote { public function power(); } interface Device { public function isEnabled(); public function enable(); public function disable(); public function setVolume($percent); } class BasicRemote implements Remote { protected Device $device; public function __construct(Device $device) { $this->device = $device; } public function power() { if ($this->device->isEnabled()) { $this->device->disable(); } else { $this->device->enable(); } } } class AdvancedRemote extends BasicRemote { public function mute() { $this->device->setVolume(0); } } class Radio implements Device { } class Tv implements Device { } ``` ## 📚ドキュメント - [9. Bridge パターン | TECHSCORE(テックスコア)](https://www.techscore.com/tech/DesignPattern/Bridge) ## 📖ノウハウ ## 💁トラブルシューティング