Package cdc.args

Interface Factory<T>

  • Type Parameters:
    T - Type of created objects.
    All Known Implementing Classes:
    AbstractFactory, AutoFactory, Singleton

    public interface Factory<T>
    Interface dedicated to objects creation.
    Author:
    Damien Carbonne
    • Method Detail

      • getObjectClass

        Class<T> getObjectClass()
        Returns:
        The class of built objects.
      • getMeta

        default Args getMeta()
        Returns:
        The meta data associated to this factory.
      • getCreationFormalArgsList

        List<FormalArgs> getCreationFormalArgsList()
        Returns a list of supported creation arguments.

        This list must not be empty.
        If creation does not need any arguments, a list containing FormalArgs.NO_FARGS should be returned.

        Returns:
        A list of supported creation arguments.
      • create

        T create​(Args args)
        Creates a T instance.
        Parameters:
        args - The creation arguments.
        Returns:
        A new T instance.
        Throws:
        IllegalArgumentException - When args is not valid.
      • create

        default T create()
        Creates a T instance.

        Uses empty args.

        Returns:
        A new T instance.
        Throws:
        IllegalArgumentException - When empty args is not valid.
      • singleton

        static <E> Factory<E> singleton​(Class<E> objectClass,
                                        E object,
                                        Args meta)
        Creates a Singleton factory.
        Type Parameters:
        E - The created objects type.
        Parameters:
        objectClass - The created objects class.
        object - The object that will be returned when a creation is asked.
        meta - The meta data associated to the created factory.
        Returns:
        A Factory that will always return object when a creation is asked.
      • singleton

        static <E> Factory<E> singleton​(Class<E> objectClass,
                                        E object)
        Creates a Singleton factory with no (empty) meta data.
        Type Parameters:
        E - The created objects type.
        Parameters:
        objectClass - The created objects class.
        object - The object that will be returned when a creation is asked.
        Returns:
        A Factory that will always return object when a creation is asked.
      • singleton

        static <E> Factory<E> singleton​(E object,
                                        Args meta)
        Creates a Singleton factory.

        The class of created objects is that of object.
        Meta data can be associated to the factory.

        Type Parameters:
        E - The created objects type.
        Parameters:
        object - The object that will be returned when a creation is asked.
        meta - The meta data associated to the created factory.
        Returns:
        A Factory that will always return object when a creation is asked.
      • singleton

        static <E> Factory<E> singleton​(E object)
        Creates a Singleton factory with no (empty) meta data.

        The class of created objects is that of object.

        Type Parameters:
        E - The created objects type.
        Parameters:
        object - The object that will be returned when a creation is asked.
        Returns:
        A Factory that will always return object when a creation is asked.