An interface defining the factory for creation of new objects representing
an enhanced class. This object is used essentially as a singleton -- there is
typically only one instance of it in the system. Common functionality, such as
caches, can be stored here.