python-design-patterns Creational Design pattern Factory Structural Design Pattern Adapter Decorator Behavioral Deisgn Pattern Observer