объясните пожалуйста зачем мы сначала результат getimpelementation() присваив...

объясните пожалуйста зачем мы сначала результат getimpelementation() присваиваем в makevalidator, а потом makevalidator() присваиваем в validator? почему мы не можем работать с makevalidator? 

потому что makevalidator это просто функция, которая возвращает нужный объект.


тут два момента. getimpelementation нужен чтобы выбрать правильную реализацию валидатора для текущего запуска тестов. это особенность тестов для тестов. второй момент, валидатор можно мутировать, а значит он должен создаваться как отдельный объект. эта тема подробнее раскрывается в курсе по ооп и дизайну.


kirill mokevnin, но почему не получается, даже чисто технически, обратиться к методам makevalidator.addcheck(fn) и makevalidator.isvalid(data)?


const makevalidator = getimplementation();
const validator = makevalidator();

все равно не понял, в моем понимании makevalidator это ссылка на функцию getimplementation и validator тоже же самое чисто визуально ... об этом будет в будущих уроках? и это вообще тема урока?


присоединяюсь к вопросу про то, почему нельзя использовать makevalidator. 


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

в двух словах, валидаторов в коде может быть много и у каждого свое состояние. поэтому валидатор это не просто объект, это класс из которого уже делаются конкретные валидаторы.