Стратегия. Strategy ► Шаблон проектирования ► Урок №10
Вставка
- Опубліковано 14 жов 2024
- Стратегия - это поведенческий паттерн, выносит набор алгоритмов в собственные классы и делает их взаимозаменимыми. В этом видео мы рассмотрим шаблон проектирования Strategy (Стратегия) с примерами на php.
#шаблоны_проектирования #design_patterns #strategy
*
★ Автор: Дмитрий Афанасьев.
★ Телеграм с новостями: t.me/i640kb
★ Канал: clck.ru/JVYct
*
► Выразить благодарность, поддержать донатом развитие канала.
★ www.tinkoff.ru...
★ www.donational...
*
► Еще интересные курсы:
★ Видеокурс по Laravel: clck.ru/JVYa2
★ Видеокурс по Git: clck.ru/JVYYm
★ Объяснение SOLID: clck.ru/JVYXq
★ Шаблоны проектирования: clck.ru/JVYX7
★ Структурные шаблоны проектирования: clck.ru/TVB9Y
★★★ Все курсы → clck.ru/JVYVd
*
► Обязательно к изучению любому разработчику
★ www.ozon.ru/ca...
★ www.chitai-gor...
⚝⚝⚝ Покровители канала:
► Константин [ ⚝⚝ Меценат ]
Сообщение: "Спасибо за отличные уроки по Laravel";
Сообщение2: "Материал такого уровня можно смело продавать, а вы дарите бесплатно. Не могу пройти мимо и не поддержать ещё раз";
.
► Алексей Пустоутов
Сообщение: "Хотелось бы шаблон Стратегия))) Писал пару раз в комментах. Спасибо вам"
.
► Аким
Сообщение: "Дмитрий, привет! Спасибо огромное за крутой курс по Laravel, весь еще не прошел. Вопрос: есть форма загрузки csv...";
.
► Александр Дера
Сообщение: "...И теперь у меня к вам вопрос: занимаетесь ли вы менторством? Если да, то свяжитесь со мной удобным для вас способом. VK, facebook...";
.
► Mordwin
Сообщение: "Спасибо за контент. Устроюсь на нормальную работу - подкину больше)";
.
► Александр Мельник
Сообщение: "Вы снимаете классные уроки, спасибо.";
.
► Дмитрий
Сообщение: "На кусочек провода для нового света :) Огромное спасибо за laravel курс! Помимо всего полезного оч порадовало то, что видео не сухие, есть какие-то отступления, шутки. Но… Я поленился и сам закодил далеко не всё. Хотелось бы получить последние исходники (Laravel, урок №50). Email ****"
.
► Алексей Сукач
Сообщение: "Спасибо за уроки. Надеюсь, не забросишь)"
.
► Lavr
Сообщение: "Большое спасибо за канал!"
.
► Павел Пожетнов
Сообщение: ""
.
► Александр
Сообщение: "С нетерпением жду продолжения!!!";
.
► Алексей Украинцев
Сообщение: "Спасибо за курс жду продолжения, особенно на тему пользовательских ролей";
.
► Александр
Сообщение: "Дмитрий не бросайте начатое! Большое спасибо за то что вы уже сделали! ИМХО отличная подача материала и разъяснения. Буду ждать продолжения.";
.
► Николай Савин
Сообщение: "Спасибо за знания";
.
► Аноним
Сообщение: "Спасибо за курс, особенно нравится материал про архитектуру приложения.";
.
► Yoyshinoda
Сообщение: "Спасибо за видеокурс по Laravel ( уже появилось желание просмотреть другие). Благодаря этому курсу очень легко ощущаю себя в переходе с C++/C# (Пара-тройка лет в коммерческих проектах) на php. Из пожеланий, с удовольствием, бы просмотрел некий ваш личный топ литературы по этому делу";
.
► Аноним
Сообщение: "Для поднятия настроения";
.
► NGL Biathlon
Сообщение: Большое спасибо за курсы!";
.
► Иван
.
► Tetragrammaton
Сообщение: "Дмитрий, спасибо за вашу работу.";
.
► Oleg Yurchenko
Сообщение: "Спасибо! Пили видосы чаще! SeriousSloth";
.
► Аноним
Сообщение: "Хотелось бы чтобы почаще видео были";
.
► Дмитрий Лейко
Сообщение: "Спасибо за уроки!!! Удачи!";
.
► Andrew
Сообщение: "На пиуко) P.S. Спасибо за крутой курс!";
.
► Виталий Котов
Сообщение: "Привет! Спасибо за видео, но к сожалению застрял в самом начале, не могу двигаться дальше, интернет перерыл, но по английски я не очень(что бы читать форумы), а по русски не нашел ничего, а что нашел, то не работает. Ответь пожалуйста на мой вопрос..";
.
► Паша Гудман
Сообщение: "Не так давно наткнулся на ваш канал с целью грамотного подхода к изучению Laravel и, в целом, процесса разработки. Спасибо за то, что вы делаете. Удачи в вашем деле.";
.
► Ярослав;
.
► Дмитрий
Сообщение: "Спасибо за уроки, смотрю параллельно еще курс, такой нудный в отличие от твоего, так держать"
;
.
► Руслан Васильчиков
Сообщение: "Наконец-то я продвинулся дальше миграций в изучении Laravel. ** * как-то не зашел ;)"
;
.
► Александр;
.
► Бахтиёр
;
Спасибо за поддержку, друзья!;
Огромнейшее спасибо за Ваш труд!
Оказалось в роликах намного доступнее чем в статьях. Спасибо огромное.
Ураааа! Спасибо огромнейшее! От всей души!
Спасибо!
Классно. Буду ещё смотреть, хотя на php не работаю, но это неважно благодаря максимально универсальным объяснениям. Спасибо!
Благодарю! На каком языке программируете?
@@DmitryAfanasyev php
C#, C++
Спасибо за видео.Коммент в поддержку!
Безразмерная благодарность Дмитрий, за благое дело 😉
Спасибо, как всегда полезно 💪👍
Работал бы с таким напарником в проекте
Thanks )
замечательный шаблон
👍
Дмитрий, Вы забросили записывать видосы? Нету видео по остальным поведенческим шаблонам
6:18 за такие неявные подключения мне били по руками. Не проще вынести в конфиги?
Чем меньше магии - тем лучше. В примере многовато магии, да. Но если имелся в виду конфиг лары - то не туда, если конфиг модуля, то можно, либо отдельный специализированный класс играющий роль конфига.
@@DmitryAfanasyev был кейс когда конфиг для подобного функционала запихали в конфиг лары... Идея с отдельным классом-конфигуратором - классная. Возьму на вооружение.
спасибо
Посмотрел до половины и понял, что это лучший пример стратегии.
Не смотря на реализацию способа выбора стратегии (я бы лучше классмап сделал).
Особо мне понравилось с методом getName. Мало кто подумает, что классу может понадобиться давать обратную связь и позволять идентифицировать себя.
Спасибо тебе за твои труды!!)
Будет ли возможность получить ваши исходники?
Дмитрий здравствуйте! Можете снять ролик о принципе единой ответственности с точки зрения конструирование объекта и учёта контекста задачи. Также о том как разбивать программу на модули и где должны между модулями проходить границы.
Ну например у меня есть модуль отпуска сотрудников. Это список отпусков и подача заявки на отпуск. Далее там есть разные проверки по оставшимся дням и прочими историями. Но вот задача усложняется тем что эти отпуска должны утверждаться его начальником, либо несколькими начальника и сразу. По идее на такую конструкцию утверждения должны быть вынесены в отдельный модуль. Так как утверждать в будущем можно будет и командировки и другие объекты.
Как прав льно проектировать классы для такой системы и модули. Какие интерфейсы и где создать. Я прям проспонсирую такой ролик. Вообще хотел бы попросит я к вам на индивидуальные занятия
А в чем разница с фабрикой? В примере порождается один из классов который расчитывает ЗП. Почему поведеньческий? Тут типичная фабрика классов. Ваши видео смотрю, интересно. Но есть вопросы
Стратегия - это про несколько классов, решающих одну и ту же задачу разными путями. Порождение объектов сюда не входит.
Т.е. метод getStrategyByUser() не относится к стратегии, это действительно скорее фабрика, которую для простоты не стали выносить в отдельный класс.
Лайк, подписка, респект )))
В приведенном примере не понятно почему используется стратегия. Стратегия нам нужна, если мы на ходу для одного объекта или для разных объектов, но одного класса, будем использовать разные алгоритмы. Тут расчет ЗП лучше сделать методом классов профессий: логиста, флориста и т.д...
Возможно. Но из вышесказанного - один подход не противоречит другому.
@@DmitryAfanasyev Это похоже на микроскоп и гвозди.
@@eugenesasin2757 Отличное пояснение....
@@DmitryAfanasyev Это не троллинг. Я пытаюсь разобраться в паттернах и ваши видео мне очень помогают. Спасибо за вашу работу!
@@eugenesasin2757 Да, я тоже самое пытаюсь сделать, так как эти шаблоны забываются и самому будет полезным пересматривать. И если вдруг есть грубые ошибки - вэлком - исправим. Но в данном шаблоне пока ошибки не вижу - частный случай стратегии....
Делаю проект, в котором есть оформление заказа в 4 шага, с налогами, товарами, с выводом данных стоимости заказа на каждом шаге, к тому же нужно переиспользовать это чтобы выводить данные о уже соершенном заказе в админке, и в кабинете пользователя, есть условия от которых могу меняться цена авто, локации, и еще парочка интересных моментов. Вот вроде все понятно по паттернам, использую репозитории, хелперы, менеджеры, но все равно ощущение что я какую то дичь написал, я сам не могу увидеть всю картину в общем, приходится постоянно вспоминать как я построил логику. Капец просто.
Как вариант. Погугли pipes в laravel. Делаешь джоб, запускаешь транзакцию, прогоняешь модель заказа и пришедшие данные через пайппы - каждый пайп - это сохранение какого-то момента в заказе. При удаче коммит, при неудаче ролбак. Пусть джоб кушает не реквест получая из него данные, а либо ДТО, ну либо тупо массив. Плюсы - 1) сохранение заказ откуда угодно - из команды, из админки, из сайта. 2) простое включение или выключение доп нюансов сохранения путем добавления пайпов. Пайпы же реализуют какой-то шаблон проектирования - цепочка или что-то такое - на вскидку не помню.
@@DmitryAfanasyev Погуглил пайпы, классная штука, буду использовать в следующих проектах. Там с сохранением в целом проблем нет, там скорее трабл что четыре шага, это отдельные страницы, и для каждой страницы нужно не только посчитать сумму текущего этапа + сумму предыдущих, но и вывести сумму каждой сущности отдельно. А там почти у каждой сущности есть условия: процентное значение или нет, и зависит от количества дней аренды(авто), тут в общем то в этом сложность) Вроде сделал, и + - нормально, дальше по обстоятельствам буду рефакторить.
@@DmitryAfanasyev Все таки применил пайпы, они выступили в роли модификаторов цен для разных сущностей, вместе с тем, при модификации цены, в свойство модели записывается класс - информер для получения информации о примененных модификаторах: арифметическая операция, сумма, название(информативность), и сама сущность которая стала причиной смены цены, все на интерфейсах и трейтах. Пайпы классная штука, главное не начать их применять где нужно и где нет)
Что-то уж сильно похож данный шаблон на делегирование. Прям один в один. Или я чет не понял?
«Мухи отдельно, котлеты отдельно» как это вбить голову нашему тимлиду?
исходник где?)))
Туть ua-cam.com/video/Hz7U5XiPkkg/v-deo.html
Какой же я всё-таки тупой, хоспаде.
Я тоже
нафига тебе на рабочем столе говорящая голова?
что с левым глазом ? ))))
Болеет
Спасибо!