第8回Bridge

NO IMAGE

こんにちわ。ぼんじりです。

 

今って花粉が多いのでしょうか。数日鼻水が泉のように湧き出ており苦労してます。

鼻炎の薬を飲んだのですが、体調があまり優れません。

 

元々アレルギー性鼻炎なのでティッシュはお友達なのですが、

ここまでひどいと嫌になりますね。

 

 

今日は久しぶりにデザインパターンについてメモ書きします。

かなり期間があいてしまったので軽めなデザインパターンのBridgeです。

 

Bridgeデザインパターンは簡単にいうと、サブクラスを作るときは「機能のクラス階層」と「実装のクラス階層」を

分けましょうよというお話。

 

「機能のクラス階層」とはスーパークラスを継承して、新たに独自の機能を追加したい場合に行う実装の階層構造で、

「実装のクラス階層」とはインターフェイスを規定しているスーパークラスを継承して、具象メソッドを実装する際の階層構造のことです。

 

■動物

   □哺乳類

      ●犬

        ○柴犬

        ○ダックスフンド

        ○コーギー

      ●猫

   □鳥類

      ●鳩

      ●鴨

   □魚類

      ●マグロ

      ●さば

 

このような図となり、「動物」→「哺乳類」→「犬」→「柴犬」の関係が”機能のクラス階層”、

「哺乳類」→「鳥類」→「魚類」の関係が”実装のクラス階層”と表現することができます。

 

Bridgeパターンは「機能のクラス階層」と「実装のクラス階層」を分けた方がいいですよというお話です。

上の例ではありません。

 

Bridgeパターンを例えてみると

(何か)”を表示する” という

(何か)というスーパークラスと

“を表示する”というスーパークラスを組み合わせて使用するプログラムがあったとします。

 

(何か)が実装されるクラスで、”を表示する”が機能が追加されるクラスです。

それぞれのクラスに実装や機能追加の様子を図に表すと下のようになります。

 

「機能のクラス階層」

■ “を表示する”

  □ “を数回表示する”

     ◆ “を数回表示すると思いきや消える”

 

「実装のクラス階層」

●(何か)

  ○(数字)

  ○(文字列)

  ○(記号)

 

“~する”の機能が書かれたクラスは(何か)であれば実行することができるので、

(数字)”を表示”したり、(記号)”を数回表示”、(文字列)”を数回表示すると思いきや消え”たりすることができるように

なりました。

”実装”と”機能”が分かれていることによって、様々な機能を簡単に拡張できるようになりますよーというデザインパターンが

Bridgeで、(何か)と”を表示する”と言う関係が2つの階層の間を結ぶ橋になってるんですよーってことのようです。

 

今回は比較的簡単でしたね。しかし、久しぶりだったので理解して自分の言葉にするのに子一時間かかってました。

月に一回は書いていこうと思います。では。