View Javadoc

1   /*
2    * Copyright 2008 University Corporation for Advanced Internet Development, Inc.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    * http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  
17  package org.opensaml.xml.util;
18  
19  /**
20   * An interface for factory classes which implement a singleton pattern for producing an
21   * output class based on an input class.
22   * 
23   * <p>
24   * Classes which implement this interface should ensure that exactly one instance of a given output
25   * class is returned from the factory for a given instance of an input class.
26   * </p>
27   *
28   * @param <Input> the factory input class type
29   * @param <Output> the factory output class type
30   */
31  public interface SingletonFactory<Input, Output> {
32  
33      /**
34       * Obtain an instance of the output class based on an input class instance.
35       * 
36       * @param input the input class instance
37       * @return an output class instance
38       */
39      public Output getInstance(Input input);
40  
41  }