diff --git a/strategy/app.d b/strategy/app.d index cc6cb84..ef3e518 100644 --- a/strategy/app.d +++ b/strategy/app.d @@ -1,6 +1,7 @@ module strategy.app; import strategy.duck; +import strategy.flybehavior; void main() { @@ -11,4 +12,6 @@ void main() Duck model = new ModelDuck; model.performQuack(); model.performFly(); + model.setFlyBehavior(new FlyRocketPowered); + model.performFly(); } diff --git a/strategy/duck.d b/strategy/duck.d index 4364422..60e963e 100644 --- a/strategy/duck.d +++ b/strategy/duck.d @@ -24,6 +24,16 @@ abstract class Duck { writeln("All ducks float, even decoys!"); } + + void setFlyBehavior(FlyBehavior fb) + { + flyBehavior = fb; + } + + void setQuackBehavior(QuackBehavior qb) + { + quackBehavior = qb; + } } class MallardDuck : Duck