public void Init() { duckFactory = new CountingDuckFactory(); //QuackCounter is Decorator Pattern mallardDuck = duckFactory.CreateMallardDuck(); redheadDuck = duckFactory.CreateRedheadDuck(); duckCall = duckFactory.CreateDuckCall(); rubberDuck = duckFactory.CreateRubberDuck(); gooseDuck = new GooseAdapter(new Goose());//Adapter Pattern //Flock is Iterator Pattern flockOfDucks = new Flock(); flockOfDucks.Add(redheadDuck); flockOfDucks.Add(duckCall); flockOfDucks.Add(rubberDuck); flockOfDucks.Add(gooseDuck); flockOfMallards = new Flock(); mallardOne = duckFactory.CreateMallardDuck(); mallardTwo = duckFactory.CreateMallardDuck(); mallardThree = duckFactory.CreateMallardDuck(); mallardFour = duckFactory.CreateMallardDuck(); flockOfMallards.Add(mallardOne); flockOfMallards.Add(mallardTwo); flockOfMallards.Add(mallardThree); flockOfMallards.Add(mallardFour); flockOfDucks.Add(flockOfMallards); }