pip_services3_components.build.CompositeFactory module

pip_services3_components.build.CompositeFactory

Composite factory implementation

copyright

Conceptual Vision Consulting LLC 2018-2019, see AUTHORS for more details.

license

MIT, see LICENSE for more details.

class pip_services3_components.build.CompositeFactory.CompositeFactory(*factories: pip_services3_components.build.IFactory.IFactory)

Bases: pip_services3_components.build.IFactory.IFactory

Aggregates multiple factories into a single factory component. When a new component is requested, it iterates through factories to locate the one able to create the requested component.

This component is used to conveniently keep all supported factories in a single place.

Example:

factory = CompositeFactory()
factory.add(new DefaultLoggerFactory())
factory.add(new DefaultCountersFactory())

loggerLocator = Descriptor("*", "logger", "*", "*", "1.0")
factory.can_create(loggerLocator)  # Result: Descriptor("pip-service", "logger", "null", "default", "1.0")
factory.create(loggerLocator)      # Result: created NullLogger
add(factory: pip_services3_components.build.IFactory.IFactory)

Adds a factory into the list of embedded factories.

Parameters

factory – a factory to be added.

can_create(locator: Any) → Any

Checks if this factory is able to create component by given locator.

This method searches for all registered components and returns a locator for component it is able to create that matches the given locator. If the factory is not able to create a requested component is returns null.

Parameters

locator – a locator to identify component to be created.

Returns

a locator for a component that the factory is able to create.

create(locator: Any) → Any

Creates a component identified by given locator.

Parameters

locator – a locator to identify component to be created.

Returns

the created component.

remove(factory: pip_services3_components.build.IFactory.IFactory)

Removes a factory from the list of embedded factories.

Parameters

factory – the factory to remove.