27 lines
771 B
C#
27 lines
771 B
C#
namespace Ch1Duck;
|
|
|
|
public abstract class Duck(IFlyBehaviour flyBehaviour, IQuackBehaviour quackBehaviour) {
|
|
internal IFlyBehaviour FlyBehaviour { get; set; } = flyBehaviour;
|
|
internal IQuackBehaviour QuackBehaviour { get; set; } = quackBehaviour;
|
|
public abstract void Display();
|
|
|
|
public void PerformFly() {
|
|
FlyBehaviour.Fly();
|
|
}
|
|
|
|
public void PerformQuack() {
|
|
QuackBehaviour.Quack();
|
|
}
|
|
}
|
|
|
|
public class MallardDuck() : Duck(new FlyWithWings(), new NormalQuack()) {
|
|
public override void Display() {
|
|
Console.WriteLine("I'm a real Mallard duck");
|
|
}
|
|
}
|
|
|
|
public class ModelDuck() : Duck(new FlyNoWay(), new NormalQuack()) {
|
|
public override void Display() {
|
|
Console.WriteLine("I'm a model duck");
|
|
}
|
|
} |