KICK THE DP

KICK THE CAN CREWでデザインパターンを攻略するブログ

Ch.9 KICK THE BRIDGE

【目標】

Bridgeパターンを使って、ラッパーは歌ったってイーゼてなことを証明しよう。

【クラス図】

f:id:mikeera2:20160923172829p:plain

【実装】

<HumanBase抽象クラス:Abstraction>(機能側の最上位のクラス)

f:id:mikeera2:20160923180608p:plain

≪Rapperクラス:RefinedAbstraction≫(機能を追加した機能側の下位のクラス)

f:id:mikeera2:20160923180832p:plain

<HumanImplインターフェース:Implementor>(実装側の最上位クラス)

f:id:mikeera2:20160923181327p:plain

≪ConcreteHumanクラス:ConcreteImplementor≫(実際のふるまいを定義した実装側の下位クラス)

f:id:mikeera2:20160923181704p:plain

[Mainクラス]

f:id:mikeera2:20160923181753p:plain

【出力結果】

f:id:mikeera2:20160923181852p:plain

【メモ】

・各クラスの関係性がイメージしづらい

・ひとつの「もの」を2つのクラスに分ける感覚がつかみづらい

・TECHSCOREのサイトの説明のが分かりやすいが、実装側のメソッドにアクセスできるようにするというイメージだとAdapterパターンとも混同しそう

・この例が不適切なのはHumanImplインターフェースを実装するのがConcreteHumanクラス以外に考えにくいところだ。これならばRapperクラスをConcreteHumanクラスから継承させるだけで目標が達成できる。TECHSCOREの例のように、SortインターフェースをQuickSortクラスとBubbleSortクラスに実装させるというような例を考えるべきだ。