Если нужен именно файл, можно отправить ajax запрос на сервер, тот сформирует файл, и отдаст его браузеру для скачивания.
Просто работать с файловой системой клиента из JS нельзя.
и пожалуй самое важное - это понимать когда какой паттерн используется. например название "фабрика" новичку ни о чем не скажет, даже не знаю где почитать про связь реального программирования и применения того или иного паттерна (со временем нарабатывается само)