Pattern: AbstractFactory, Java flavour
Pattern: abstract factory, Python flavour