Bridge パターン
しかしながら、継承関係の都合上これらのクラスはすべて個別に定義しなければならず、結果として同じようなコードを別途に記述しなければならなくなる。
この問題が起こる理由は、クラス階層の中に複数の継承関係が混在していることである。 上の例において、Dishware と Plate および Bowl の関係は、食器の種類による継承関係とみなすことができ、 一方で Plate と WoodenPlate および GlassPlate の関係は、食器の材質による継承関係とみなすことができる。 このように複数の継承関係が存在することにより、一つの継承関係が他の継承関係に悪影響を及ぼすことになる。
このクラス構造は、Bridge パターンを適用することによって以下のように改善することができる。
このクラス図では Dishware から派生する継承関係は食器の種類のみであり、材質に関する情報は Material(素材)クラスに委譲している。 この構造により、種類と材質はそれぞれ独立して拡張することができ、クラスの数も減らすことが出来る。
Bridge パターンのクラス図を以下に挙げる。
Bridge パターン(ブリッジ・パターン)とは、GoF(Gang of Four; 4人のギャングたち)によって定義されたデザインパターンの1つである。 「橋渡し」のクラスを用意することによって、クラスを複数の方向に拡張させることを目的とする。