OOjs/Registries and factories
OO.Registry
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 OO.Registry
create and maintain specialized indexes during registration and provide alternative lookup methods which use these indexes.
OO.Factory
extends OO.Registry
and allows for registration 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 OO.Factory
provide additional registration and lookup functionality; but in addition also often provide methods for accessing static information about registered classes.
Basic usage
editAny class with a static name property can be used with a factory.
// Instantiation
var factory = new OO.Factory();
// Classes
function Cherry() {}
OO.initClass( Cherry );
Cherry.static.name = 'red';
factory.register( Cherry );
function Banana() {}
OO.initClass( Banana );
Banana.static.name = 'yellow';
factory.register( Banana );
// Access
function createFruit( color ) {
return factory.create( color );
}
See also
editOOjs is maintained by the Editing department.
Get help:
|