task2/solution01/src/org/apidesign/apifest08/currency/ConvertorsFactory.java
author Jaroslav Tulach <jaroslav.tulach@apidesign.org>
Wed, 01 Oct 2008 10:43:05 +0200
changeset 29 f6073056b9fe
parent 6 task1/solution01/src/org/apidesign/apifest08/currency/ConvertorsFactory.java@97662396c0fd
permissions -rw-r--r--
Getting ready for task2: copying all solutions to new locations
     1 package org.apidesign.apifest08.currency;
     2 
     3 /**
     4  * Some Factory for Factories :-)
     5  * Depends on the whole application design...
     6  * @author Ladislav Vitasek
     7  */
     8 final public class ConvertorsFactory {
     9     private CurrencyConvertorFactory currencyConvertorFactoryInstance = null;
    10     private final static ConvertorsFactory instance = new ConvertorsFactory();
    11 
    12 
    13     private ConvertorsFactory() {
    14 
    15     }
    16 
    17     public static CurrencyConvertorFactory getCurrencyConvertorFactoryInstance() throws CannotInstantiateFactoryException {
    18         return getInstance().getCurrencyConvertor();
    19     }
    20 
    21     /**
    22      * Returns instance of CurrencyConvertorFactory 
    23      * @return new instance of CurrencyConvertorFactory
    24      * @throws CannotInstantiateFactoryException
    25      */
    26     private synchronized CurrencyConvertorFactory getCurrencyConvertor() throws CannotInstantiateFactoryException {
    27         if (currencyConvertorFactoryInstance == null) {//intern implementation
    28 //            String className = System.getProperty("currencyFactory", CurrencyConvertorFactoryImpl.class.getName());
    29 //            try {
    30 //                currencyConvertorFactoryInstance = (CurrencyConvertorFactory) Class.forName(className).newInstance();
    31 //            } catch (Exception e) {
    32 //                throw new CannotInstantiateFactoryException(e);
    33 //            }
    34             //without reflection
    35             currencyConvertorFactoryInstance = new CurrencyConvertorFactoryImpl();
    36         }
    37         return currencyConvertorFactoryInstance;
    38     }
    39 
    40     public static ConvertorsFactory getInstance() {
    41         return instance;
    42     }
    43 }