design-patterns-python factory pattern: used when we are not sure about what type of objects are needed to solve problem eg