В шаблоне Фабрика мы создаем объекты, не раскрывая логику создания клиенту, и клиент использует общий интерфейс для создания нового типа объекта.
Идея состоит в том, чтобы использовать статическую функцию, которая создает и возвращает экземпляры, скрывая от пользователя детали модулей класса.
Фабричный метод — это один из основных принципов проектирования для создания объекта, позволяющий клиентам создавать объекты библиотеки, чтобы они были не тесно связаны с иерархией классов библиотеки.
Вместо того, чтобы использовать сложную условную структуру для выбора конкретной реализации, приложение делегирует это решение отдельному компоненту, который создает объект. При таком подходе код приложения упрощается, что делает его более удобным для повторного использования и обслуживания.