Удобная навигация по видео :) 0:00 - Начало 0:55 - Builder это порождающий паттерн 1:31 - Проблема если не использовать паттерн Builder 4:20 - Решение которое предлагает паттерн Builder 6:43 - Анатомия Builder 10:32 - Поддержка канала 10:54 - Live example 11:45 - Пример: Создаём проект в Visual Studio 2022 (.NET6) 28:11 - Пример: Рефакторинг Builder на Fluent Builder
@ushio. Жыл бұрын
Дякую за пояснення! Величезна допомога початківцям ❤
@АлексейКарасев-п2ж10 ай бұрын
ЛЮБЛЮ ВОПЕР И ТВОИ ВИДЕО!
@KeskilChnProgram2 жыл бұрын
Обожаю этот канал, просто находка 😃
@zcrownsworth2 жыл бұрын
Опа , это как раз то , что я хотел бы от тебя посмотреть Человек умеющий объяснять сложные вещи простыми словами с хорошим монтажем , объясняет паттерны . Браво
@gadelgamestudio36172 жыл бұрын
Одна из лучших подач информации в русскоязычном youtube!Успехов Вам, продолжайте в том же духе!
@Noname-f6z7z2 жыл бұрын
Хотелось бы видеть побольше видео о патернах. Мне безумно нравится Ваша подача материала. Спасибо за это :>
@arturbo3134 Жыл бұрын
Бро Ты лучший. Работаю джуном на шарпе в Германии на бэке. За годы обучения тут, даже близко такого уровня умелого преподнесения информации не встречал. Лайк и уважение.
@oniko3075 Жыл бұрын
У вас явно талант. Спасибо столь качественные уроки
@glukh0v_d1ma Жыл бұрын
спасибо, настолько доходчиво что дальше некуда, на пальцах, очень благодарен!!!
@DIY-dq9hv2 жыл бұрын
Лучшее что я видел из видео по языкам
@Skywalker06gg2 жыл бұрын
Почему я не знал про этот канал раньше? Почему он появился в рекомендациях спустя столько времени Грёбаный Ютуб Автору большое спасибо
@codaza-channel2 жыл бұрын
Лучше поздно, чем никогда! Добро пожаловать на борт ⛵
@АлексФерНорте2 жыл бұрын
Ты самый лучший! Спецом отлайкаю тебя вообще везде чтобы рано или поздно попасть в список имен рядом с Иваном и Борисом :P
@BrownAleks2 жыл бұрын
Отличный учебный материал! Прост потрясающе! Я в диком восторге! Аплодирую стоя! Однозначно лайк, подписка. Рекомендации друзьям, студентам, соседям и т.д...
@АндрейСуховерхов-ж1ы2 жыл бұрын
Огромное спасибо автору роликов, что так медленно объясняет. Впервые, смотря ролики, я успеваю понимать, о чём речь!!! И примеры отличные, и монтаж красивый. Продолжайте в том же духе!
@voffkaboo71832 жыл бұрын
Как всегда топ, практически всегда повторяю эти видосы перед собесом)
@tynoheaekbat23282 жыл бұрын
Великолепный ролик, спасибо! надеюсь, что дальше будет только круче!
@hello_world_zz Жыл бұрын
надеюсь будете продолжать свой труд!
@Corwin44 Жыл бұрын
Один из лучших каналов по шарпу. Смотрю после курса Сакутина, все еще нахожу для себя много нового и интересного, топовый контент 🔥
@ДмитрийУрюпин-ч6у2 жыл бұрын
Действительно реальный объект реального мира))
@ДанилПасечник-х7п2 жыл бұрын
Великолепная подача, спасибо тебе большое!!
@Re-tj8bt2 жыл бұрын
Боже храни Codaza!
@krahmaletskrakmalets75872 жыл бұрын
Давай давай, контент в кайф, почаще бы вот так
@НикитаАкула-ш2ч2 жыл бұрын
Крутое видео, видно,что проделан огромный пласт работы, спасибо
@yaric992 жыл бұрын
Класс! Очень нравятся мне ваши видео по паттернам!
@vitalysushilov58022 жыл бұрын
Спасибо, отличная работа и отличное исполнение. Жду новых паттернов.
@salamatturdukhodzhaev38942 жыл бұрын
Знаю что тут станет понятно. Заранее спасибо!!!
@newak3346 Жыл бұрын
Будущая профессия всех "программистов"
@stingerfingerr15992 жыл бұрын
Спасибо большое за чудесный ролик
@vitor_corve2 жыл бұрын
Шикарная подача
@Алексей-ъ9р6н2 жыл бұрын
Ни Иван, ни Борис, ни Фёдор, но всё равно лайк поставлю! P.S. некст голосую за паттерн Мост.
@Дмитрийсекрет-н7о2 жыл бұрын
Срочно нужна большая серия уроков по всем паттернам и лучшим практикам проектирования и разработки.
@ellakamenetsky7742 Жыл бұрын
Спасибо большое!!! Хорошее изложение материала. Пожелание - сделать тише фоновую музыку в следующих видео.
@krahmaletskrakmalets75872 жыл бұрын
Отличный ролик👍
@Привет-ъ9м2 жыл бұрын
Отличный канал!
@joym885710 ай бұрын
Отличное видео, респект тебе. Хотел поинтересоваться, не лучше было бы назвать интерфейс IReportBuilder, а не IEmployeeReportBuilder? Ведь его будут реализовывать классы разных билдеров отчётов, а не только отчёта о работниках. Ну и соответственно сделать базовую сущность для отчёта, например класс Report, и от него уже наследовать конкретные отчёты (и возвращать именно Report из метода в IReportBuilder)
@masdaiable Жыл бұрын
Просто, огромное спасибо!
@TheKovalAndrey2 жыл бұрын
это великолепно, чувак
@codaza-channel2 жыл бұрын
🤟
@inskips Жыл бұрын
Отлично. Спасибо
@PushkaryovVsevolod Жыл бұрын
Люто лайкаю! Подписался.
@agens9538 Жыл бұрын
уф 100 "-" - жестко, new string...
@Дмитрийсекрет-н7о2 жыл бұрын
Респект и уважуха.
@lettuceturnipthebeets7902 жыл бұрын
БУКВАЛЬНО СЕГОДНЯ СМОТРЕЛ ПРО ЭТОТ ПАТТЕРН!! спасибо большое, кодаза
@КамбэкПетрович2 жыл бұрын
Лучший!!
@vovadoom2 жыл бұрын
Великолепный ролик, благодарю. Вы просили подать вам идею ! Хотел попросить сделать урок, построить полностью проект с правильной архитектурой на Net 5 со всеми слоями и Entity Framework очень важно Context с многими базами данных.Спасибо
@tortik222 жыл бұрын
Очень классный канал! Приятно слушать и смотреть на профессионала, а не на всяких там дударей, хаудихо и т.п) А есть на канале гайды для изучения Шарпа от новичка до Джуна?)
@codaza-channel2 жыл бұрын
Благодарю за высокую оценку 💙 Рад, что информация оказалась полезной для вас. Гайдов пока нет.
@ivannebyshynets88292 жыл бұрын
Супер!
@narzaru3 ай бұрын
Мне большое всего нравится пример из книги банды четырех - лабиринт. А то остальные примеры напоминают обычный конструктор.
@universeunity99702 ай бұрын
Здесь важно понимать, что билдер в основном нужен именно, когда объект иммутабельный и полей много. Тогда сетеры ты не сделаешь, а конструкторов нужно много, на все возможные комбинации параметров, вот в чём дело. Пример может быть любой, пример с бургером вполне себе неплохой.
@turalaliyev17642 жыл бұрын
ты лучший на рунете по дотнет продолжи с паттернами пожалуйста, еще хотелось бы увидеть обьяснение от тебя на тему EF core tracking как происходит
@owlindark Жыл бұрын
Thanks for your work. Comment a s support of your channel.
@Игорь-ж9е4з Жыл бұрын
Класс! Спасибо за ваш труд. А вы часом менторингом не занимаетесь?
@dakefasso94572 жыл бұрын
Спасибо!
@I_c_a_r_u_S_S5 ай бұрын
Хорошая работа, однако я бы предпочел более простой пример для введения (без директора), т.к. это немного усложняет понимание в принципе простого конструкта
@boterf122 жыл бұрын
гений
@cgultra910 Жыл бұрын
Очень хорошее и понятное объяснение патерна, но мне не хватает обзора кода после его написания. Просто с помощью дебага пройтись и пояснить что вообще происходит
@coolexcs2 жыл бұрын
Невероятно доступное объяснение и хороший пример, рад что это является нормой для канала. Хотелось бы побольше уроков про паттерны. Также интересно, почему при переопределении .ToString() на 13:58 использовался StringBuilder, однако далее в видеоролике работа шла с обычными строками (например, при работе с _employeeReport на 18:48-22:48). Какие критерии обычно служат выбором между string и StringBuilder, возможно ли делать правильный выбор при отсутствии весомого опыта ? Стоит ли ждать видеороликов по базовым аспектам asp.net core ?
@rob11nzon Жыл бұрын
Интерфейс IEmployeeReportBuilder лучше переименовать в IReportBuilder, так как интерфейс должен быть максимально абстрактным. Чтобы потом не фрустрировать от строчки CustromerReportBuilder : IEmployeeReportBuilder.
@MaksimBartosh2 жыл бұрын
*Не пишу на решётке с нового года. Котлин приятнее, сахар 'apply' решает.*
@pinpad5956 Жыл бұрын
Объяснение интересное, но что за три поросенка Хидер, Боди и Футир?
@V1RTUOZ882 жыл бұрын
Ммм, свежак подъехал
@dokers20842 жыл бұрын
Было бы круто увидеть видео или шортс про оператор return от вас
@clutchmeisteryo9831 Жыл бұрын
А есть какой то способ настроить порядок вызова методов в билдере? Условно чтобы был строго определен порядок вызова. builder.AddBeaf().AddKetchup() но не наоборот?
@ДмитрийКондратенко-б5ь2 жыл бұрын
@codaza подскажи что за фишка в Program.cs. Без определения класса, без Main, не внутри метода - сразу объявлять переменные. Это что-то новенькое в c#? Где почитать можно? И да, отличный ролик, все супер понятно, спасибо большое за твой труд
@ДмитрийКондратенко-б5ь2 жыл бұрын
А вот, нашёл: docs.microsoft.com/ru-ru/dotnet/csharp/fundamentals/program-structure/top-level-statements. Не знал об этом
@codaza-channel2 жыл бұрын
Да, это новая возможность, которая появилась в C# 9. В целом, ничего сложного, просто можно не писать всю обвязку связанную с главной точкой входа - методом Main(). Мне нравится пользоваться этой возможностью для небольших учебных примеров.
@dizaynerak Жыл бұрын
метод Build*() должен быть один и он должен возвращать созданный объект. У вас даже в презентации все методы начинаются с With*(), а вы зачем-то взяли и забыли про это.
@ilyazakharov50502 жыл бұрын
Если появится новый бургер, в который мы захотим добавлять совсем новый ингридиент, то придется добавить в интерфейс buildPardD() и потом во всех уже созданных классах имплементировать этот метод?
@codaza-channel2 жыл бұрын
Это зависит от ваших целей и задач. Если добавление нового ингредиента потребует соответствующие изменения в тех местах, где создаётся объект, то ответ: да, нужно во всех классах имплементировать этот метод. Если же у вас большая кодовая база и новый метод не затрагивает её, то ответ: нет, достаточно унаследовать интерфейс IBuilder с добавлением нового метода и унаследовать класс строителя с реализацией унаследованного интерфейса. А можно реализовать унаследованный интерфейс в одном из классов-строителей где планируется его применение.
@dgdarkking266 Жыл бұрын
Директор же в данном коде это паттерн фасад? А то я названия никак не запомню у шаблонов - прочитал пару статей и вдохновился чем-то новым, если такого ранее не юзал, а вот названия разом 20+ шаблонов хрен запомнишь
@ВикторияШипунова-и7ф2 жыл бұрын
Здравствуйте! Подскажите, пожалуйста, на диаграмме UML какие все-таки связи протягивались бы от продукта к остальным объектам?
@codaza-channel2 жыл бұрын
Здравствуйте! От Builder - связь зависимости (--->) От Client и Director зависит от бизнес-логики (может быть агрегация, композиция или ассоциация). В классическом виде, любые связи от Director к Product стоит избегать, но бывают ситуации, где этого сделать нельзя. Как правило, такие связи принято опускать, чтобы не загромождать суть решаемой проблемы.
@ВикторияШипунова-и7ф2 жыл бұрын
@@codaza-channel Спасибо!
@redice8928 Жыл бұрын
про воппер забыли сказать, что он состоит из лука, там практически всё лук.
@Fenix72rus2 жыл бұрын
С текстом понятно, делаем Append и всё соединилось. А что с классами то делать? Есть у меня класс бургер. Как в него правильно уместить все ингредиенты, если ингредиенты сами являются классами.
@codaza-channel2 жыл бұрын
Спасибо за отличный вопрос. В сущности, пример с бургером, практически не отличается от примера с отчётом. В случае когда в состав вашего класса входят другие классы, в этих вложенных классах Вы можете переопределить метод ToString(). Таким образом, в классе Burger, Вы сможете сможете получить строковое представление вложенного объекта. Кроме того, пример можно разнообразить. Представьте что повару (который готовит бургер) на экран монитора с заказами отображается не просто текст (бургер с котлетой и помидорами), а прям картинка и, возможно, рекомендации по приготовлению.
@Fenix72rus2 жыл бұрын
@@codaza-channel Спасибо! А если мне нужны не текстовые данные? У каждого класса свой тип данных, не сериализуемый в стринг. В таком случае можно использовать Builder?
@codaza-channel2 жыл бұрын
Конечно, так как Builder - это не про "строки"; Builder - это про построение сложного объекта по шагам. В примере мы использовали ToString() у объекта отчёта в качестве наглядной реализации. Чтобы понять использовать паттерн Builder или нет, ответьте себе на три вопроса: 1. У меня есть сложный объект? 2. Существуют ли вариации создания этого объекта? 3. Возможно ли вынесение логики создания объекта? Если на все три вопроса Вы ответили "Да", то ваш выбор - паттерн Builder.
@AlienZom2 жыл бұрын
Две мясных котлеты гриль, специальный соус, сыр, огурцы, салат и лук, всё на булочке с кунжутом, только так и это ... не Воппер.
@saldy7232 жыл бұрын
У меня по ходу создания бургера, вопрос созрел. Я бы хотел скрыть методы сборки бургера от клиента, но тогда шеф тоже не сможет собирать его. Как я мог бы инкапсулировать этот процесс?
@codaza-channel2 жыл бұрын
Интересное желание 🙂 Не знаю зачем вам хотелось бы так сделать, но у меня есть для вас один вариант. Вы можете выделить строителя и шефа в отдельный проект и сделать методы сборки бургера с модификатором доступа internal. При таком подходе, методы будут видны в рамках сборки и не видны за её пределами.
@1ww-bg1lp Жыл бұрын
new string('-',100)
@AzizjanAyupov_leo2 жыл бұрын
}{идер
@sunly4887 Жыл бұрын
показана самая отвратительная реализация паттерна. Хранить продукт в билдере это полный кринж
@vladlenbulatov10227 ай бұрын
Оччень!!! медленные слова в которых мало смыслы (котлеты, компоненты и т.п.) - ну очень (!) долго. Может расчет на тупых или иначе "обкуренных"? Первые пять минут можно уложить в одну. Совет (надеюсь) - "курите" меньше, может и высказывать свои мысли научитесь высказывать проще и быстрее...
@mr_smind5 ай бұрын
включи x2. Что касается видео то сделано очень хороши и без воды.
@uporka692411 ай бұрын
Я за бигтейсти из мака
@uporka692411 ай бұрын
Не понимаю зачем нужен интерфейс билдера. Ведь он обязует реализовать методы, название которых лишены смысла. А директора часто манагером обзывают