Bridgeパターン@Java言語で学ぶデザインパターン入門

Java画像

参考書籍

Java言語で学ぶデザインパターン入門第3版

Bridgeパターンとは?

参考書籍では以下のように説明されています。

機能のクラス階層と実装のクラス階層を橋渡しするデザインパターン

ふむ何言ってるかわかりませんね。

サンプルコードを見る前に機能のクラス階層と実装のクラス階層について説明します。

機能のクラス階層

ポイントは2つ

  • スーパークラスは基本的な機能を持っている
  • サブクラスで新しい機能を追加する

クラス図で書くとこんな感じの階層になります。

実装のクラス階層

ポイントは2つ

  • スーパークラスは抽象メソッドによってインターフェースを定義している
  • サブクラスは具象メソッドによってそのインターフェースを実装する

クラス図で書くと以下のようになります。

メリット

  1. 実装のクラス階層と、機能のクラス階層を分離して管理することができる
  2. 拡張するのが楽になる

サンプルコード

実装のクラス階層:Displayクラス

何かを表示するためのクラス。

実際の処理はDisplauImplクラスにお任せしてしまします。

機能のクラス階層:CountDisplayクラス

Displayクラスに新たな機能を追加したクラス

実装のクラス階層:DisplayImplクラス

処理のインターフェースを定義するクラス

実装のクラス階層:StringDisplayImplクラス

本当の実装を書いているクラスです。

Mainクラス

出力

メリットの振り返り

①実装のクラス階層と、機能のクラス階層を分離して管理することができる

機能のクラス階層と、実装のクラス階層を分離して管理するのがBridgeパターンの特徴です。

そのため、各階層を独立して拡張することができます。

②拡張が楽になる

①で独立して拡張できるため、拡張するのが楽です。

またDisplayクラスでは実際の処理は引数で渡ってきた、DisplayImplクラスにお任せしているので、結びつきが緩いので、拡張しやすいです。

関連しているデザインパターン

併せてご覧ください。

image TemplateMethodパターン@Java言語で学ぶデザインパターン入門

Java画像 Adapterパターン/Wrapperパターン@Java言語で学ぶデザインパターン入門

Java画像 Abstract Factoryパターン@Java言語で学ぶデザインパターン入門

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


error: Content is protected !!