def simulate(self, duckFactory): # type: (AbstractDuckFactory) -> None mallardDuck = duckFactory.createMallardDuck() redheadDuck = duckFactory.createRedheadDuck() duckCall = duckFactory.createDuckCall() rubberDuck = duckFactory.createRubberDuck() gooseDuck = GooseAdapter(Goose()) flockOfDucks = Flock() flockOfDucks.add(mallardDuck) flockOfDucks.add(redheadDuck) flockOfDucks.add(rubberDuck) flockOfDucks.add(gooseDuck) flockOfMallards = Flock() mallardDuck1 = duckFactory.createMallardDuck() mallardDuck2 = duckFactory.createMallardDuck() mallardDuck3 = duckFactory.createMallardDuck() mallardDuck4 = duckFactory.createMallardDuck() flockOfMallards.add(mallardDuck1) flockOfMallards.add(mallardDuck2) flockOfMallards.add(mallardDuck3) flockOfMallards.add(mallardDuck4) flockOfDucks.add(flockOfMallards) # print "\nDuck simulator: Whole Flock Simulation" # self.__simulate(flockOfDucks) # # print "\nDuck simulator: Mallard Flock Simulation" # self.__simulate(flockOfMallards) print "\nDuck simulator: With Observer" quackologist = Quackologist() flockOfDucks.registerObserver(quackologist) self.__simulate(flockOfDucks) print "Number of quacks: " + str(QuackCounter.getQuacks())