『Java言語で学ぶデザインパターン入門』をPHPで実習する Bridge

増補改訂版Java言語で学ぶデザインパターン入門

本記事に掲載したサンプルコードは、https://github.com/ryo-utsunomiya/design_patternでも公開中です。

Bridgeとは

「機能」のクラス階層と「実装」のクラス階層を分離し、それらを独立に変更できるようにすることです。
これによって、「機能」を柔軟に交換できるようになります。

まず、「何かを表示する」という「機能」を持ったDisplayクラスを作成してみます。

このクラスは「何かを表示する」機能の具体的な実装であるDisplayImplに依存しています。DisplayImplは、実装を交換可能にするため抽象クラスにします。

次に、DisplayImplの具象クラスであるStringDisplayImplを実装してみます。

StringDisplayImplでは、文字列を装飾して表示します。StringDisplayImplを変更しなくても、DisplayImplのサブクラスを作れば、表示方法を変更することができます。

次に、表示する「機能」の方を変更してみます。

CountDisplayは、Displayを拡張し、同じ文言を複数回表示するmultiDisplayメソッドを追加しています。

最後に、これらのクラスの使用例です。

このように、機能と実装を分離することで、機能・実装の両方を柔軟に交換可能にするのがBridgeパターンの特長です。

コメントを残す