Creates an instance of several families of classes. Provide an interface
for creating families of related or dependent objects without specifying
their concrete classes.
Client just use abstractFactory and abstractProduce two interfaces.
When you input different concrete abstractFactory, products are
changed accordingly.