001/* 002 * GeoAPI - Java interfaces for OGC/ISO standards 003 * Copyright © 2004-2023 Open Geospatial Consortium, Inc. 004 * http://www.geoapi.org 005 * 006 * Licensed under the Apache License, Version 2.0 (the "License"); 007 * you may not use this file except in compliance with the License. 008 * You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, software 013 * distributed under the License is distributed on an "AS IS" BASIS, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018package org.opengis.util; 019 020import org.opengis.metadata.citation.Citation; 021 022 023/** 024 * Base interface for all factories. Factories can be grouped in two categories: 025 * 026 * <ul> 027 * <li>{@linkplain org.opengis.referencing.AuthorityFactory Authority factories} 028 * creates objects from a compact string defined by an authority.</li> 029 * <li>{@linkplain org.opengis.referencing.ObjectFactory Object factories} 030 * allows applications to make objects that cannot be created by an authority 031 * factory.</li> 032 * </ul> 033 * 034 * Object factories are very flexible, whereas the authority factories are easier to use. 035 * 036 * @departure harmonization 037 * This interface is not part of the OGC specification. It is added for uniformity, 038 * in order to provide a common base class for all factories. 039 * 040 * @author Martin Desruisseaux (IRD) 041 * @version 3.0 042 * @since 1.0 043 */ 044public interface Factory { 045 /** 046 * Returns the vendor responsible for creating this factory implementation. Many implementations 047 * may be available for the same factory interface. Implementations can be managed by a 048 * {@linkplain java.util.ServiceLoader service loader}. 049 * 050 * @return the vendor for this factory implementation. 051 */ 052 Citation getVendor(); 053}