An interface for classes which will maintain and generate new instances of
classes that require several parameters that will be used consistently
several times. Implementations of this interface are also used to be used
in conjunction with a GeneratorMap, which will create new instances
for keys not currently in the map by using an instance of a Generator.