OOjs/Registries and factories

is a base class that provides a simple map interface for associating arbitrary data with a symbolic name. Used in place of a plain object to provide additional registration or lookup functionality. Commonly, subclasses of  create and maintain specialized indexes during registration and provide alternative lookup methods which use these indexes.

extends of classes with instantiation abstraction. Used for referring to classes by a symbolic name, which allows the class to be overridden without modification of calling code. Commonly, subclasses of, like  , provide additional registration and lookup functionality; but in addition also often provide methods for accessing static information about registered classes.

Basic usage
Any class with a static name property can be used with a factory.