Шаблон Фабрика ранее освещался здесь: Вкратце повторю основную идею. Фабрика по нашему запросу должна сгенерировать нужный нам объект. Наивная реализация на JS выглядит так: Почему бы не создать объект класса Wasp напрямую, написав: const obj = new Wasp(); ? Потому что мы используем фабрику тогда, когда не можем прямо в коде написать конкретное имя класса. Например, мы просим пользователя ввести либо 'ant', либо 'wasp', либо 'bee'. И в зависимости от того, что он ввёл, уже создать объект нужного класса. Тогда нам придётся писать условия: если пользователь ввёл 'ant', то создадим new Ant(), если ввёл 'wasp', то создадим new Wasp(), и т.д. И чтобы не повторять условия каждый раз, когда в них возникает необходимость, мы переносим их в фабрику. И теперь всегда обращаемся к фабрике как к единственному источнику объектов, чтобы всё было под контролем. Далее, в материале про фабрику поднимался вопрос, как избавиться от условий внутри фабрики. Один из способов это использовать механизм, которы