Utility classes which enable dynamic binding to factory implementations at runtime.

Because the core module consists almost excusivly of interfaces Factories play a vital role in how developers use the API.

Although the interfaces that are declared in core are implemented in defaultcore you should not use classes in defaultcore directly. Instead you should use factories.
But if you can't use defaultcore how can you get at the implementations of factories that are in it?

The answer is the FactoryFinder in this package, read its documentation for details on how it works.