
Duck
コードをテストする
以下の
Duck
クラス(
Duck.java
)と
2
ページ前の
MallardDuck
クラス
(
MallardDuck.java
)を作成しコンパイルします。
1
public abstract class Duck {
FlyBehavior flyBehavior;
QuackBehavior quackBehavior;
public Duck() {
}
public abstract void display();
public void performFly() {
flyBehavior.fly();
}
public void performQuack() {
quackBehavior.quack();
}
public void swim() {
System.out.println("
すべてのカモは浮きます。おとりのカモでも!
");
}
}
振る舞いインタフェース型のため
の
2
つの参照変数を宣言します。
(同一パッケージ内の)すべての
カモサブクラスはこの
2
つの変数
を継承します。
振る舞いクラスに委譲します。
FlyBehavior
インタフェース(
FlyBehavior.java
)と
2
つの振る舞い実装ク
ラ ス(
FlyWithWings.java
と
FlyNoWay.java
)を作成しコンパイルします。
2
public interface FlyBehavior {
public void fly();
}
public class FlyWithWings implements ...