Interface Factory<I>

Type Parameters:
I - the type of the contextual instances this Factory creates and destroys
All Superinterfaces:
Aggregate, Constable
All Known Implementing Classes:
Constant
Functional Interface:
This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.

@FunctionalInterface public interface Factory<I> extends Aggregate, Constable
A creator and destroyer of contextual instances of a particular type.
Author:
Laird Nelson
  • Method Details

    • create

      Creates a new contextual instance, possibly using the supplied Request, if it is non-null, to acquire its dependencies.

      Implementations of this method must not call singleton().

      Implementations of this method should consider calling Creation.created(Object) on the supplied Request with the contextual instance about to be returned.

      Parameters:
      r - a Request responsible for the demand for creation and used for acquiring any needed dependencies; may be null in early, uncommon bootstrap-like situations
      Returns:
      a new contextual instance, or null
      Throws:
      CreationException - if an error occurs
      See Also:
    • singleton

      default I singleton()
      Returns the sole contextual instance of this Factory's type, if there is one, or null in the very common case that there is not.

      The default implementation of this method returns null.

      Overrides of this method should not call create(Request).

      Overrides of this method must be idempotent and must return a determinate value.

      Returns:
      the sole contextual instance of this Factory's type, or (commonly) null
    • destroys

      default boolean destroys()
      Returns true if this Factory implementation destroys its created contextual instances in some way, or false if it does not.

      The default implementation of this method returns true.

      Overrides of this method must be idempotent and return a determinate value.

      Returns:
      true if this Factory implementation destroys its created contextual instances in some way; false otherwise
      See Also:
    • destroy

      default void destroy(I i, Request<I> creationRequest)
    • describeConstable

      default Optional<? extends ConstantDesc> describeConstable()
      Returns an Optional containing the nominal descriptor for this instance, if one can be constructed, or an empty Optional if one cannot be constructed.

      The default implementation of this method returns an Optional that contains a dynamic constant representing an invocation of the implementation's constructor that takes no arguments. The resolution of this dynamic constant is undefined if the implementation does not declare such a constructor.

      Specified by:
      describeConstable in interface Constable
      Returns:
      an Optional containing the nominal descriptor for this instance, if one can be constructed, or an empty Optional if one cannot be constructed
      Idempotency:
      This method is neither idempotent nor deterministic.
      Thread Safety:
      This method is safe for concurrent use by multiple threads.