static void Main(string[] args) { #region Factory, Flock, and Duck Creation AbstractDuckFactory duckFactory = new CountingDuckFactory(); AbstractGooseFactory gooseFactory = new GooseFactory(); IQuack redhead = duckFactory.CreateRedheadDuck(); IQuack call = duckFactory.CreateDuckCall(); IQuack rubber = duckFactory.CreateRubberDuck(); IQuack goose = gooseFactory.CreateGoose(); Flock duckFlock = new Flock(); duckFlock.Add(redhead); duckFlock.Add(call); duckFlock.Add(rubber); duckFlock.Add(goose); IQuack mallard1 = duckFactory.CreatMallardDuck(); IQuack mallard2 = duckFactory.CreatMallardDuck(); IQuack mallard3 = duckFactory.CreatMallardDuck(); IQuack mallard4 = duckFactory.CreatMallardDuck(); Flock mallardFlock = new Flock(); mallardFlock.Add(mallard1); mallardFlock.Add(mallard2); mallardFlock.Add(mallard3); mallardFlock.Add(mallard4); duckFlock.Add(mallardFlock); #endregion DuckWatcher duckWatcher = new DuckWatcher(); duckFlock.Subscribe(duckWatcher); Console.WriteLine("\r\n***DUCK SIMULATOR: WHOLE FLOCK***"); Simulate(duckFlock); Console.WriteLine("The ducks quacked {0} times. Thank you for playing.", QuackCounter.Quacks); Console.WriteLine("\r\n***DUCK SIMULATOR: MALLARD FLOCK***"); Simulate(mallardFlock); Console.WriteLine("The ducks quacked {0} times. Thank you for playing.", QuackCounter.Quacks); Console.ReadLine(); }
void Start() { var flock = new Flock(); IQuackable mallarDuck = _duckFactory.CreateMallarDuck(); IQuackable redheadDuck = _duckFactory.CreateRedheadDuck(); IQuackable duckCall = _duckFactory.CreateDuckCall(); IQuackable rubberDuck = _duckFactory.CreateRubberDuck(); IQuackable gooseDuck = new GooseAdapter(new Goose()); flock.Add(mallarDuck); flock.Add(redheadDuck); flock.Add(duckCall); flock.Add(rubberDuck); flock.Quack(); gooseDuck.Quack(); Debug.Log($"QuackCount: {QuackCounter.GetQuacks()}"); }