# Interface ObjectFactory

All Superinterfaces:
  `Factory`

All Known Subinterfaces:
  `CoordinateOperationFactory, CRSFactory, CSFactory, DatumFactory`

All Known Implementing Classes:
  `DefaultCoordinateOperationFactory, GeodeticObjectFactory`

public interface ObjectFactory extends Factory
Base interface for all factories of identified objects. Factories build up complex objects from simpler objects or values. This factory allows applications to make coordinate systems, datum or coordinate reference systems that cannot be created by an authority factory. This factory is very flexible, whereas the authority factory is easier to use.

Object properties
Most factory methods expect a `Map` argument. The map can be a `Properties` instance. The map shall contain at least a `"name"` property. In the common case where the name is the only property, the map may be constructed with `Collections.singletonMap("name", theName)` where theName is an arbitrary name as free text.

Implementations are encouraged to recognize at least the properties listed in the following table. Additional implementation-specific properties can be added. Unknown properties shall be ignored.

Property name | Value type | Value given to
--- | --- | ---
"name" | `ReferenceIdentifier` or `String` | `IdentifiedObject​.getName()`
"alias" | `String`, `String[]`, `GenericName` or `GenericName[]` | `IdentifiedObject​.getAlias()`
"authority" | `String` or `Citation` | `Identifier​.getAuthority()` on the name
"codespace" | `String` | `ReferenceIdentifier​.getCodeSpace()` on the name
"version" | `String` | `ReferenceIdentifier​.getVersion()` on the name
"identifiers" | `Identifier` or `Identifier[]` | `IdentifiedObject​.getIdentifiers()`
"remarks" | `String` or `InternationalString` | `IdentifiedObject​.getRemarks()`

The `"name"` property is mandatory. All others are optional. All localizable attributes like `"remarks"` can have a language and country code suffix. For example the `"remarks_fr"` property stands for remarks in French and the `"remarks_fr_CA"` property stands for remarks in French Canadian.

Since:
  2.0

- ## Method Summary

  ### Methods inherited from interface Factory

  `getVendor`