Factories are special objects that have this purpose

  • to create an instance of one non-injectable class or interface
  • to create an instance of one non-injectable class or object
  • to create an instance of one non-injectable class or function
  • None of the above

Factories are service classes that instantiate non-injectable classes, that is, models that represent a database entity. They create a layer of abstraction between the ObjectManager and business code.

devdocs.magento.com/guides/v2.0/extension-dev-guide/factories.html

Factories are smart enough to resolve dependencies and allow you to get the correct instance of an interface as defined in your module’s di.xml.

devdocs.magento.com/guides/v2.0/extension-dev-guide/factories.html#interfaces

Тупой индус взял формулировку отсюда: magento.stackexchange.com/q/123973