Added Singleton pattern that uses enum

This is a singleton abstract factory.