PROBLEM: Complex systems need a means of adding and referencing resources at run time.Traditional OO systems provide compile time bindings for objects only. Other resources such as Database connections and cryptography schemes may be left to open APIs for implementation.
PREREQUISITES: Resources in the system must have some common lowest common denominator.
SOLUTION: Provide a mechanism to locate resources based on a naming scheme.
RESULTING CONTEXT: When a programmer wants a resource, they get a reference to registry (often an implementation of the SingletonPattern) and performs an action, often called bind or resolveName. This operation takes a string form of a name, and matches it to a resource in the system.
RATIONALE: This pattern is used through ComponentFrameworks?. LDAP, JNDI, CORBA Naming Service, ATG Dynamo Nucleus Components, Microsoft Windows Registry, and so on. Java has some baseline functionality built in for this with the Class.forName() method as well.