case study exercises summary python design patterns python design patterns ii testing object-oriented programs the decorator pattern decorator example decorators in python the observer pattern an observer example the strategy pattern strategy example strategy in python the state pattern state example state versus strategy state transition as coroutines the singleton pattern singleton implementation the template pattern template example exercises summary the adapter pattern the facade pattern the flyweight pattern the command pattern the abstract factory pattern the composite pattern exercises summary why testtest-driven development unit testing assertion methods reducing boilerplate and cleaning up organizing and running tests ignoring broken tests [