This interfaces forms the core of the Geotools plug-in system, by which capabilities can be added to the library at runtime. Each sub-interface defines a service. Most services are set up with concrete implementation being registered for use in a service registry, which acts as a container for service implementations.
Service registries don't need to be a Geotools implementation. They can be (but are not limited to) any {@link javax.imageio.spi.ServiceRegistry} subclass. If the standard{@code ServiceRegistry} (or its Geotools extension {@link FactoryRegistry}) is selected as a container for services, then factory implementations should be declared as below (select only one way):
In addition, it is recommended that implementations provide a constructor expecting a single {@link Hints} argument. This optional argument gives to the user some controlof the factory's low-level details. The amount of control is factory specific. The geotools library defines a global class called {@link Hints} that is ment as API (i.e. you can assumethese hints are supported). Factories may also provide information on their own custom hints as part of their javadoc class description.
Examples:An application supplied a {@linkplain Hints#DATUM_FACTORY datum factory hint}, being passed to a {@linkplain org.opengis.referencing.datum.DatumAuthorityFactory datum authorityfactory} so that all datum created from an authority code will come from the supplied datumfactory.
An application supplied a {@link org.geotools.feature.FeatureFactory} (ensuring allconstructed features support the Eclipse's {@code IAdaptable} interface), being passed to a{@link org.geotools.feature.FeatureTypeFactory} so that all {@code FeatureTypes}constructed will produce features supporting the indicated interface.
As seen in those examples this concept of a hint becomes more interesting when the operation being controlled is discovery of other services used by the Factory. By supplying appropriate hints one can chain together several factories and retarget them to an application specific task.
@author Ian Schneider @author Martin Desruisseaux @author Jody Garnett @source $URL$ @version $Id$ @see Hints @see FactoryRegistry
|
|
|
|