public class BusinessObjectFactory
{
    private static BusinessObjectFactory instance;
    private Map prototypeMap;
    
    private BusinessObjectFactory()
    {
        super();
        prototypeMap = new Hashtable();
    }
    
    public void addPrototype(
            String a_id,
            BusinessObjectPrototype a_prototype)
    {
        prototypeMap.put(a_id, a_prototype);
    }
    
    public BusinessObject newBusinessObject(
            String a_id)
    {
        BusinessObjectPrototype l_prototype
                = (BusinessObjectPrototype) prototypeMap.get(a_id);
        if (l_prototype != null) {
            return l_prototype.newBusinessObject();
        }
        return null(); // or return a default instance
    }
    
    public static BusinessObjectFactory getInstance()
    {
        if (instance == null) {
            instance = new BusinessObjectFactory();
        }
        return instance;
    }
}