public static void Main()
var context = new Context(new RegularDuck());
context = new Context(new DonaldDuck());
context = new Context(new RubberDuck());
context = new Context(new DecoyDuck());
public Context(Duck duck)
public void DoDuckStuff()
Console.WriteLine("\n\n");
public abstract void Display();
public virtual void Quack()
Console.WriteLine("Quack! Quack!");
Console.WriteLine("Duck is swimming");
public virtual void Fly()
Console.WriteLine("Duck is flying");
public override void Display()
Console.WriteLine("This is a Regular Duck");
public override void Display()
Console.WriteLine("This is a Donald Duck");
public override void Display()
Console.WriteLine("This is a Rubber Duck");
public override void Quack()
Console.WriteLine("Squick! Squick!");
public override void Fly()
public override void Display()
Console.WriteLine("This is a Decoy Duck");
public override void Quack()
public override void Fly()