#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)
## 📖ノウハウ
## 💁トラブルシューティング