Interface that must be implemented by those classes that are meant to be used as a factory to create complex domain objects.
This object may have a complex construction with setters and constructor parameters which are going to be defined by the
ComponentBuildingDefinition that use them.