Обожаю твои видосы, ну ничего лишнего, у других растянуто по часу на каждый паттерн. Как в магазине: я просто хочу посмотреть, что есть в наличии, а консультант начинает затирать какой ахрененный именно "этот" товар.
Пришел сюда повторить материал, но совсем запутался Если я не ошибаюсь, говоря о паттерне Фабричный метод ты говорил о простой фабрике, а не о самом патерне Различия в том, что простая фабрика имеет большой условный оператор для создания того или иного продукта, а паттерн создает класс в котором есть пустой метод по созданию продукта с определенным интерфейсом, а подклассы могут его переназначать для создания конкретных продуктов
Начал только разбираться. Проверьте, пожалуйста, по-моему в паттерне Singleton закралась опечатка (на 06:36). Установка счетчика в ноль в конструкторе необходимо переместить в блок if. Спасибо.
5:40 Простите, Евгений, я что-то плохо понял к какому контексту принадлежит переменная instance? Похоже она определяется глобально? Если я не ошибаюсь в строгом режиме такое делать нельзя? 7:54 А вот вижу, просто дальше не досмотрел. Хм, подход интересный, но тогда еще остается проблема с оператором "new", ведь при каждом его вызове будет выделятся память, если я не ошибаюсь.
Нет не могу. Паттерны в React не используются. Как вариант - очень отдалённо можно сказать что для утилит нормализации данных использую что-то вроде Адаптера. А так, паттерны в основном нужны при разработке на чистом JS
На примере кажется не фабрика нужна а массив обьектов конфигурации с параметрами авто. Пробежавшись по массиву мы также создадим тебе авто, но при этом не придется просить программиста править код классов
Если я правильно понял, то объект команды лучше передавать непосредственно в метод execute водителя - в таком случае один водитель сможет выполнять разные команды. Если же команду передавать в конструктор водителя, то получается "Один водитель - одна команда".
Объясните, зачем нужно паттерн Builder, если можно создавать объекты на основе параметров из конструктора, минуя цепочку методов? И кода же меньше выйдет. Или это пример такой простой, а на самом деле в подобные методы фабрики кладут код длиннее, который неудобно помещать в аргументы?
Спасибо! 01:34:28 а почему водителю не передан класс "onSwitchOffCommand"? Как теперь ему машину глушить?)) Наверное в классе "Driver" надо было разделить логику запуска/останова двигателя? 01:36:58 думаю лучше передавать как можно меньше информации (в данном случае news было бы достаточно) Хорошее видео!
Кстати тоже не очень понял. Я назвал класс не Driver, а Command, и тогда можно в его экземпляры передавать как onStartCommand так и onSwitchOffCommand, и тогда более-менее смысл паттерна начинает быть понятным.
и да, можно все же было показать и более продвинутые примеры этих паттернов, а не простые, как вы говорите) не недооценивайте силу и желание работяг :D
я искренне не понимаю, зачем мне паттерные проектирования, работаю 3 года, ощущаю себя middle++/senior.... пользуюсь SOLID, DRY, KISS , FSD archirecture.... но нафига мне паттерны? я не пользуюсь ООП, я пишу в функциональном стиле (да я понимаю что функциональное программирование это что то типа библиотеки ramda.. но в целом и в общем - называю стиль написания функциональным)
6:35 - А разве не будет if(!instance) выполняться, когда мы впервый раз создали этот класс через new? И получится, что instance будет равно this первого созданного класса? тут я не совсем понимаю как работает
Так и должно быть. В первый раз переменная пустая, и мы записываем в нее this. Во второй проверка выдает заполненность переменной и сразу делает возврат существующего объекта. Но у него в этом варианте по бороде пошел весь синглтон, потому что он при каждой инициализации обнуляет счетчик. Можно проверить, инициализировав второй счетчик после повышения первого. Он должен был счетчик и инициализацию внести в фигурные скобки. Во втором, где в начале идет вариант возврата существующего объекта, такого не происходит.
Прокси какой-то неправильный, интерфейс же поменялся, т. к оригинальный метод не принимал аргумент с паролем или это норма в JS ? Это самый крутой материал по паттернам, который я встречал
спс. жаль, что в коде на гите не оставили примеры использования этих паттернов. было бы намного лучше и наглядней. особенно когда пересматриваешь чисто код, без видео.
В реализации visitor лишние console.log() вызовы: 1. В exportVisitor не надо писать auto.export = console.log(`Exported data: ${auto.info()}`) Лучше: auto.export = `Exported data: ${auto.info()}` А после ифов return auto.export И в классе Auto: return visitor(this) И потом выводить в консоль console.log(tesla.accept(exportVisitor)) 2. Или оставить все как есть но тогда вызывать без консоли tesla.accept(exportVisitor)). Все равно undefined возвращает.
А чем отличается реализация синглотон паттерна от статического класса. Ведь по сути статический класс сам по себе реализует все задачи singleton. Статичность класса гарантирует что сущность будет одна во всех случаях. Вот например: class Basket { static count = 0; static countUp(){ Basket.count++; } } _______________________________________________ --------------- script.js ---------------------------------- Basket.countUp(); console.log(Basket.count); ----------------- script2.js ___________________ Basket.countUp(); console.log(Basket.count); консоль: 1 2
Очень помог этот курс подготовиться к собесу, да и вообще все твои ролики помогли стать хорошим jun+ разработчиком.
👍
Евгени очень дорожит подписчиков что ему не трудно ответит каждому комментарии. Спасибо
Спасибо за твой труд!
Спасибо за отзыв
годный урок. кратко и ясно
Спасибо)
Спасибо за видос будем посмотреть))
Пожалуйста)
Спасибо, все прослушала и законспектировала....очень важное видео
Всегда пожалуйста
Спасибо за труд, интересно и полезно
Пожалуйста
@@YauhenKavalchuk0:38
Смотрел ваш курс по graphQL - эт супер ))) еще раз спасибо. Надеюсь у вас в Минске все ок, мы все с вами!
Спасибо за поддержку!
ОГРОМНОЕ тебе спасибо! Ты сделал невероятное - такую сложную тему так круто й просто объяснил. Спасибо, за то, что ты делаешь!)
Спасибо большое за отзыв 😊
ничего не понятно! материал для новичков объяснен так что и профи не поймет что тут говорят
прими мою благодарность, малой.
сохраню себе это видео в качестве шпаргалки и руководства на будущее)
👍
думаю у меня есть дельное замечание, когда комментируешь код, мог бы его подчеркивать по ходу, уверен восприятие повысится существенно. лайк занес ;)
Дуже дякую за відео, корисно для всіх рівнів программістів
Пожалуйста
самое лучшее видео по паттернам
Спасибо
Большое спасибо за урок! Успехов вам!
Пожалуйста
мне кажется, я еще не раз посмотрю этот видос)))
👍
Вы крутой!! Спасибо за видео. Успехов вам
Спасибо большое)
Класс, четко! Мало что понял. Нужно больше практики.
Спасибо за отзыв)
Чётко! Отличный курс!
JavaScript Паттерны
Благодарю)
Спасибо, очень удобный формат))
Пожалуйста
#собеседование #javascript #frontend #html #css #React #Redux видео база, топ, основа.
👍
Спасибо тебе за труды большое)
Пожалуйста
спасибо, самое понятное что я находил по паттернам
Пожалуйста)
я еще не смотрел но уже в восторге. Спасибо большое, давным давно хотел разобрать!!!
Пожалуйста)
Шикарно! Спасибо большое!
Пожалуйста
Евгений спасибо большое за этот канал) Буду теперь тебя смотреть)
Спасибо за отзыв
Спасибо за видео)
Пожалуйста
крутое видео, спасибо
Пожалуйста
Обожаю твои видосы, ну ничего лишнего, у других растянуто по часу на каждый паттерн. Как в магазине: я просто хочу посмотреть, что есть в наличии, а консультант начинает затирать какой ахрененный именно "этот" товар.
Спасибо за отзыв и на а сравнение)
Thanks for this video. I've just started to read a book about it.
My pleasure
Супер! Огромное спасибо за Вашу работу! Все понятно!
Спасибо за отзыв
а мне непонятно, автор очень плохо объясняет материал
в "сохраненные" 🔥
👍
Отличное видео, подача материала очень четкая и понятная, спасибо большое.
Немножко не понял смысл паттерна Strategy, ну ещё почитаю про него )
Пожалуйста
Отлично
👍
спасибо за видео, очень полезно
Пожалуйста
Ты крут!
Спасибо)
И тема сегодняшней лекции
👍
Ничего не понятно, но очень интересно
¯\_(ツ)_/¯
Спасибо за урок!
Пожалуйста
Пришел сюда повторить материал, но совсем запутался
Если я не ошибаюсь, говоря о паттерне Фабричный метод ты говорил о простой фабрике, а не о самом патерне
Различия в том, что простая фабрика имеет большой условный оператор для создания того или иного продукта, а паттерн создает класс в котором есть пустой метод по созданию продукта с определенным интерфейсом, а подклассы могут его переназначать для создания конкретных продуктов
¯\ _(ツ)_/¯
Начал только разбираться. Проверьте, пожалуйста, по-моему в паттерне Singleton закралась опечатка (на 06:36). Установка счетчика в ноль в конструкторе необходимо переместить в блок if. Спасибо.
yes
5:40 Простите, Евгений, я что-то плохо понял к какому контексту принадлежит переменная instance? Похоже она определяется глобально? Если я не ошибаюсь в строгом режиме такое делать нельзя? 7:54 А вот вижу, просто дальше не досмотрел. Хм, подход интересный, но тогда еще остается проблема с оператором "new", ведь при каждом его вызове будет выделятся память, если я не ошибаюсь.
Евгений, можете навести примеры, когда вы используете преведенные паттерны во время разработки на React ?
Нет не могу. Паттерны в React не используются. Как вариант - очень отдалённо можно сказать что для утилит нормализации данных использую что-то вроде Адаптера. А так, паттерны в основном нужны при разработке на чистом JS
@@YauhenKavalchuk на чистом js большинство паттернов не нужны или их сложно понять
@@YauhenKavalchuk а как же HOC в реакте, это же декораторы
На примере кажется не фабрика нужна а массив обьектов конфигурации с параметрами авто. Пробежавшись по массиву мы также создадим тебе авто, но при этом не придется просить программиста править код классов
🤔возможно, не очень удачный пример
Спасибо за курс, с первого раза (ничего не зная о паттернах), сложно, конечно. Но мне кажется, что и тема эта не для базового уровня?
Пожалуйста
Если я правильно понял, то объект команды лучше передавать непосредственно в метод execute водителя - в таком случае один водитель сможет выполнять разные команды. Если же команду передавать в конструктор водителя, то получается "Один водитель - одна команда".
Правильно поняли
В видео показан пример "Simple Factory", а не "Factory Method" - что, кажется, немного "урезает" всю мощь паттерна. Поправьте если я не прав :)
Ну, я всё рассказал в видео)
46:35 Мост - это разве не структурный паттерн? Оговорка?
Да, оговорка
Объясните, зачем нужно паттерн Builder, если можно создавать объекты на основе параметров из конструктора, минуя цепочку методов? И кода же меньше выйдет. Или это пример такой простой, а на самом деле в подобные методы фабрики кладут код длиннее, который неудобно помещать в аргументы?
Hero!
Thanks
Спасибо!
01:34:28 а почему водителю не передан класс "onSwitchOffCommand"? Как теперь ему машину глушить?)) Наверное в классе "Driver" надо было разделить логику запуска/останова двигателя?
01:36:58 думаю лучше передавать как можно меньше информации (в данном случае news было бы достаточно)
Хорошее видео!
Кстати тоже не очень понял. Я назвал класс не Driver, а Command, и тогда можно в его экземпляры передавать как onStartCommand так и onSwitchOffCommand, и тогда более-менее смысл паттерна начинает быть понятным.
и да, можно все же было показать и более продвинутые примеры этих паттернов, а не простые, как вы говорите)
не недооценивайте силу и желание работяг :D
Как уж есть
@@YauhenKavalchuk спасибо и на том) но если у Вас будет время и желание - можете дополнить эту серию уроков :)
я искренне не понимаю, зачем мне паттерные проектирования, работаю 3 года, ощущаю себя middle++/senior.... пользуюсь SOLID, DRY, KISS , FSD archirecture.... но нафига мне паттерны? я не пользуюсь ООП, я пишу в функциональном стиле (да я понимаю что функциональное программирование это что то типа библиотеки ramda.. но в целом и в общем - называю стиль написания функциональным)
ощущаешь middle++/senior, но по факту джун - смирись
6:35 - А разве не будет if(!instance) выполняться, когда мы впервый раз создали этот класс через new? И получится, что instance будет равно this первого созданного класса? тут я не совсем понимаю как работает
Так и должно быть. В первый раз переменная пустая, и мы записываем в нее this. Во второй проверка выдает заполненность переменной и сразу делает возврат существующего объекта.
Но у него в этом варианте по бороде пошел весь синглтон, потому что он при каждой инициализации обнуляет счетчик. Можно проверить, инициализировав второй счетчик после повышения первого. Он должен был счетчик и инициализацию внести в фигурные скобки.
Во втором, где в начале идет вариант возврата существующего объекта, такого не происходит.
33:05 «авторизироваться» 😅
🙂
Прокси какой-то неправильный, интерфейс же поменялся, т. к оригинальный метод не принимал аргумент с паролем или это норма в JS ? Это самый крутой материал по паттернам, который я встречал
Да вроде всё ок. За отзыв, спасибо
после видео смастирил машину
😁
41:34 (Компоновщик):
- Один исходный класс...
- (Чтобы править ими всеми?)
Ага)
А полные видео по каждому паттерну будут на канале?
Это видео содержит полный курс по всем паттернам
@@YauhenKavalchuk спасибо!
на JS все это выглядит стремно, без нормального ООП, интерфейсов... :) но для новичков видео однозначно хорошое!
Да на JS это стрёмно)
Кто не умеет писать на JS, для них вообще все стремно. Это язык другого поколения, его нельзя сравнить и сложно понять.
@@user-ox4yl6gu3u так говорят те кто кроме JS ничего больше не видел :)
@@_lazer_ ну если знания ассемблера, Си, Python - это относится, к тем, кто ни чего не видел, то твоя правда!
Не совсем понял разницу между декоратором и посетителем
Bridge это структурный паттерн
Да, я оговорился
спс. жаль, что в коде на гите не оставили примеры использования этих паттернов.
было бы намного лучше и наглядней. особенно когда пересматриваешь чисто код, без видео.
В git есть весь код! Посмотрите в ветках
@@YauhenKavalchuk да, код именно паттернов есть, но не их использования = практического применения. я об этом))
Паттерн Composite Вообще не зашёл. Описание древовидное а пример достаточно плоский, может стоило еще 1 уровень добавить ( может body расписать )
+
👍
А куда ещё один пропал, где 23-й то😁
🤷♂️😁
У кого собез в Епаме на этой неделе ?)
¯\ _(ツ)_/¯
У Компоновщика временная метка съехала: должна быть на 40:24
Спасибо, поправил
В реализации visitor лишние console.log() вызовы:
1. В exportVisitor не надо писать auto.export = console.log(`Exported data: ${auto.info()}`)
Лучше: auto.export = `Exported data: ${auto.info()}`
А после ифов return auto.export
И в классе Auto: return visitor(this)
И потом выводить в консоль console.log(tesla.accept(exportVisitor))
2. Или оставить все как есть но тогда вызывать без консоли tesla.accept(exportVisitor)). Все равно undefined возвращает.
👍
А чем отличается реализация синглотон паттерна от статического класса. Ведь по сути статический класс сам по себе реализует все задачи singleton.
Статичность класса гарантирует что сущность будет одна во всех случаях.
Вот например:
class Basket {
static count = 0;
static countUp(){
Basket.count++;
}
}
_______________________________________________
--------------- script.js ----------------------------------
Basket.countUp();
console.log(Basket.count);
----------------- script2.js ___________________
Basket.countUp();
console.log(Basket.count);
консоль:
1
2