/*
* This file is part of the HyperGraphDB source distribution. This is copyrighted
* software. For permitted uses, licensing options and redistribution, please see
* the LicensingInformation file at the root level of the distribution.
*
* Copyright (c) 2005-2010 Kobrix Software, Inc. All rights reserved.
*/
package org.hypergraphdb.type;
import org.hypergraphdb.HGHandle;
/**
* <p>
* An <code>ObjectFactory</code> is capable of constructing concrete run-time
* instances of a certain <code>Class</code>.
* </p>
*
* @author Borislav Iordanov
*/
public interface ObjectFactory<T>
{
/**
* <p>
* Return the <code>Class</code> of the objects being constructed by this factory.
* </p>
*/
Class<T> getType();
/**
* <p>Create a new run-time instance of the type this factory
* is responsible for.</p>
*/
T make();
/**
* <p>Create a new run-time <code>HGLink</code> instance of the type this factory is
* responsible for.</p>
*/
T make(HGHandle [] targetSet);
}