Add AbstractFactory.py