Можешь объяснить паттерн Factory в JavaScript и показать, как он абстрагирует создание объектов, возвращая разные экземпляры классов в зависимости от входных параметров? — ДейлиПреп