
FlyBehavior
はすべての飛ぶ振
る舞いのクラスが実装するインタ
フェースです。新しい飛ぶ振る舞
いのクラスはすべて、
fly()
メソッ
ドを実装するだけでよいのです。
翼を持つすべてのカモに対
する飛ぶ振る舞いの実装
すべての飛べないカモに
対する実装
本当にガーガー
鳴く振る舞い
キューキューという
音を出す振る舞い
全く音を出さない
振る舞い
鳴く振る舞いに対しても同様
です。実装する必要のある
quack()
メソッドだけを含んだ
インタフェースがあります。
<<interface>>
FlyBehavior
fly()
fly() {
//
カモの飛ぶ
//
振る舞いを実装
}
FlyWithWings
fly() {
//
何もしない。
//
飛べない!
}
FlyNoWay
<<interface>>
QuackBehavior
quack()
quack() {
//
カモの鳴く
//
振る舞いを実装
}
Quack
quack() {
//
ゴムのアヒルが
//
キューキュー鳴く
}
Squeak
quack() {
//
何もしない。
//
鳴けない!
}
MuteQuack
カモの振る舞いを実装する
ここでは
FlyBehavior
と
QuackBehavior
の
2
つのインタフェースと、そ
れぞれの具体的な振る舞いを実装するクラスがあります。
そのため、継承に伴うすべ
ての負担を負うことなく、
「再利用」のメリットを享受
できます。
この設計では、飛ぶ振る舞いや鳴く振る舞いがDuck のサブ
クラス内に隠蔽されなくなるので、別の型のオブジェクト
が振る舞いを再利用できます! ...