C# Builder Строитель | Design Patterns

  Рет қаралды 31,217

codaza

codaza

Күн бұрын

Пікірлер: 93
@codaza-channel
@codaza-channel 2 жыл бұрын
Удобная навигация по видео :) 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.
@ushio. Жыл бұрын
Дякую за пояснення! Величезна допомога початківцям ❤
@АлексейКарасев-п2ж
@АлексейКарасев-п2ж 10 ай бұрын
ЛЮБЛЮ ВОПЕР И ТВОИ ВИДЕО!
@KeskilChnProgram
@KeskilChnProgram 2 жыл бұрын
Обожаю этот канал, просто находка 😃
@zcrownsworth
@zcrownsworth 2 жыл бұрын
Опа , это как раз то , что я хотел бы от тебя посмотреть Человек умеющий объяснять сложные вещи простыми словами с хорошим монтажем , объясняет паттерны . Браво
@gadelgamestudio3617
@gadelgamestudio3617 2 жыл бұрын
Одна из лучших подач информации в русскоязычном youtube!Успехов Вам, продолжайте в том же духе!
@Noname-f6z7z
@Noname-f6z7z 2 жыл бұрын
Хотелось бы видеть побольше видео о патернах. Мне безумно нравится Ваша подача материала. Спасибо за это :>
@arturbo3134
@arturbo3134 Жыл бұрын
Бро Ты лучший. Работаю джуном на шарпе в Германии на бэке. За годы обучения тут, даже близко такого уровня умелого преподнесения информации не встречал. Лайк и уважение.
@oniko3075
@oniko3075 Жыл бұрын
У вас явно талант. Спасибо столь качественные уроки
@glukh0v_d1ma
@glukh0v_d1ma Жыл бұрын
спасибо, настолько доходчиво что дальше некуда, на пальцах, очень благодарен!!!
@DIY-dq9hv
@DIY-dq9hv 2 жыл бұрын
Лучшее что я видел из видео по языкам
@Skywalker06gg
@Skywalker06gg 2 жыл бұрын
Почему я не знал про этот канал раньше? Почему он появился в рекомендациях спустя столько времени Грёбаный Ютуб Автору большое спасибо
@codaza-channel
@codaza-channel 2 жыл бұрын
Лучше поздно, чем никогда! Добро пожаловать на борт ⛵
@АлексФерНорте
@АлексФерНорте 2 жыл бұрын
Ты самый лучший! Спецом отлайкаю тебя вообще везде чтобы рано или поздно попасть в список имен рядом с Иваном и Борисом :P
@BrownAleks
@BrownAleks 2 жыл бұрын
Отличный учебный материал! Прост потрясающе! Я в диком восторге! Аплодирую стоя! Однозначно лайк, подписка. Рекомендации друзьям, студентам, соседям и т.д...
@АндрейСуховерхов-ж1ы
@АндрейСуховерхов-ж1ы 2 жыл бұрын
Огромное спасибо автору роликов, что так медленно объясняет. Впервые, смотря ролики, я успеваю понимать, о чём речь!!! И примеры отличные, и монтаж красивый. Продолжайте в том же духе!
@voffkaboo7183
@voffkaboo7183 2 жыл бұрын
Как всегда топ, практически всегда повторяю эти видосы перед собесом)
@tynoheaekbat2328
@tynoheaekbat2328 2 жыл бұрын
Великолепный ролик, спасибо! надеюсь, что дальше будет только круче!
@hello_world_zz
@hello_world_zz Жыл бұрын
надеюсь будете продолжать свой труд!
@Corwin44
@Corwin44 Жыл бұрын
Один из лучших каналов по шарпу. Смотрю после курса Сакутина, все еще нахожу для себя много нового и интересного, топовый контент 🔥
@ДмитрийУрюпин-ч6у
@ДмитрийУрюпин-ч6у 2 жыл бұрын
Действительно реальный объект реального мира))
@ДанилПасечник-х7п
@ДанилПасечник-х7п 2 жыл бұрын
Великолепная подача, спасибо тебе большое!!
@Re-tj8bt
@Re-tj8bt 2 жыл бұрын
Боже храни Codaza!
@krahmaletskrakmalets7587
@krahmaletskrakmalets7587 2 жыл бұрын
Давай давай, контент в кайф, почаще бы вот так
@НикитаАкула-ш2ч
@НикитаАкула-ш2ч 2 жыл бұрын
Крутое видео, видно,что проделан огромный пласт работы, спасибо
@yaric99
@yaric99 2 жыл бұрын
Класс! Очень нравятся мне ваши видео по паттернам!
@vitalysushilov5802
@vitalysushilov5802 2 жыл бұрын
Спасибо, отличная работа и отличное исполнение. Жду новых паттернов.
@salamatturdukhodzhaev3894
@salamatturdukhodzhaev3894 2 жыл бұрын
Знаю что тут станет понятно. Заранее спасибо!!!
@newak3346
@newak3346 Жыл бұрын
Будущая профессия всех "программистов"
@stingerfingerr1599
@stingerfingerr1599 2 жыл бұрын
Спасибо большое за чудесный ролик
@vitor_corve
@vitor_corve 2 жыл бұрын
Шикарная подача
@Алексей-ъ9р6н
@Алексей-ъ9р6н 2 жыл бұрын
Ни Иван, ни Борис, ни Фёдор, но всё равно лайк поставлю! P.S. некст голосую за паттерн Мост.
@Дмитрийсекрет-н7о
@Дмитрийсекрет-н7о 2 жыл бұрын
Срочно нужна большая серия уроков по всем паттернам и лучшим практикам проектирования и разработки.
@ellakamenetsky7742
@ellakamenetsky7742 Жыл бұрын
Спасибо большое!!! Хорошее изложение материала. Пожелание - сделать тише фоновую музыку в следующих видео.
@krahmaletskrakmalets7587
@krahmaletskrakmalets7587 2 жыл бұрын
Отличный ролик👍
@Привет-ъ9м
@Привет-ъ9м 2 жыл бұрын
Отличный канал!
@joym8857
@joym8857 10 ай бұрын
Отличное видео, респект тебе. Хотел поинтересоваться, не лучше было бы назвать интерфейс IReportBuilder, а не IEmployeeReportBuilder? Ведь его будут реализовывать классы разных билдеров отчётов, а не только отчёта о работниках. Ну и соответственно сделать базовую сущность для отчёта, например класс Report, и от него уже наследовать конкретные отчёты (и возвращать именно Report из метода в IReportBuilder)
@masdaiable
@masdaiable Жыл бұрын
Просто, огромное спасибо!
@TheKovalAndrey
@TheKovalAndrey 2 жыл бұрын
это великолепно, чувак
@codaza-channel
@codaza-channel 2 жыл бұрын
🤟
@inskips
@inskips Жыл бұрын
Отлично. Спасибо
@PushkaryovVsevolod
@PushkaryovVsevolod Жыл бұрын
Люто лайкаю! Подписался.
@agens9538
@agens9538 Жыл бұрын
уф 100 "-" - жестко, new string...
@Дмитрийсекрет-н7о
@Дмитрийсекрет-н7о 2 жыл бұрын
Респект и уважуха.
@lettuceturnipthebeets790
@lettuceturnipthebeets790 2 жыл бұрын
БУКВАЛЬНО СЕГОДНЯ СМОТРЕЛ ПРО ЭТОТ ПАТТЕРН!! спасибо большое, кодаза
@КамбэкПетрович
@КамбэкПетрович 2 жыл бұрын
Лучший!!
@vovadoom
@vovadoom 2 жыл бұрын
Великолепный ролик, благодарю. Вы просили подать вам идею ! Хотел попросить сделать урок, построить полностью проект с правильной архитектурой на Net 5 со всеми слоями и Entity Framework очень важно Context с многими базами данных.Спасибо
@tortik22
@tortik22 2 жыл бұрын
Очень классный канал! Приятно слушать и смотреть на профессионала, а не на всяких там дударей, хаудихо и т.п) А есть на канале гайды для изучения Шарпа от новичка до Джуна?)
@codaza-channel
@codaza-channel 2 жыл бұрын
Благодарю за высокую оценку 💙 Рад, что информация оказалась полезной для вас. Гайдов пока нет.
@ivannebyshynets8829
@ivannebyshynets8829 2 жыл бұрын
Супер!
@narzaru
@narzaru 3 ай бұрын
Мне большое всего нравится пример из книги банды четырех - лабиринт. А то остальные примеры напоминают обычный конструктор.
@universeunity9970
@universeunity9970 2 ай бұрын
Здесь важно понимать, что билдер в основном нужен именно, когда объект иммутабельный и полей много. Тогда сетеры ты не сделаешь, а конструкторов нужно много, на все возможные комбинации параметров, вот в чём дело. Пример может быть любой, пример с бургером вполне себе неплохой.
@turalaliyev1764
@turalaliyev1764 2 жыл бұрын
ты лучший на рунете по дотнет продолжи с паттернами пожалуйста, еще хотелось бы увидеть обьяснение от тебя на тему EF core tracking как происходит
@owlindark
@owlindark Жыл бұрын
Thanks for your work. Comment a s support of your channel.
@Игорь-ж9е4з
@Игорь-ж9е4з Жыл бұрын
Класс! Спасибо за ваш труд. А вы часом менторингом не занимаетесь?
@dakefasso9457
@dakefasso9457 2 жыл бұрын
Спасибо!
@I_c_a_r_u_S_S
@I_c_a_r_u_S_S 5 ай бұрын
Хорошая работа, однако я бы предпочел более простой пример для введения (без директора), т.к. это немного усложняет понимание в принципе простого конструкта
@boterf12
@boterf12 2 жыл бұрын
гений
@cgultra910
@cgultra910 Жыл бұрын
Очень хорошее и понятное объяснение патерна, но мне не хватает обзора кода после его написания. Просто с помощью дебага пройтись и пояснить что вообще происходит
@coolexcs
@coolexcs 2 жыл бұрын
Невероятно доступное объяснение и хороший пример, рад что это является нормой для канала. Хотелось бы побольше уроков про паттерны. Также интересно, почему при переопределении .ToString() на 13:58 использовался StringBuilder, однако далее в видеоролике работа шла с обычными строками (например, при работе с _employeeReport на 18:48-22:48). Какие критерии обычно служат выбором между string и StringBuilder, возможно ли делать правильный выбор при отсутствии весомого опыта ? Стоит ли ждать видеороликов по базовым аспектам asp.net core ?
@rob11nzon
@rob11nzon Жыл бұрын
Интерфейс IEmployeeReportBuilder лучше переименовать в IReportBuilder, так как интерфейс должен быть максимально абстрактным. Чтобы потом не фрустрировать от строчки CustromerReportBuilder : IEmployeeReportBuilder.
@MaksimBartosh
@MaksimBartosh 2 жыл бұрын
*Не пишу на решётке с нового года. Котлин приятнее, сахар 'apply' решает.*
@pinpad5956
@pinpad5956 Жыл бұрын
Объяснение интересное, но что за три поросенка Хидер, Боди и Футир?
@V1RTUOZ88
@V1RTUOZ88 2 жыл бұрын
Ммм, свежак подъехал
@dokers2084
@dokers2084 2 жыл бұрын
Было бы круто увидеть видео или шортс про оператор return от вас
@clutchmeisteryo9831
@clutchmeisteryo9831 Жыл бұрын
А есть какой то способ настроить порядок вызова методов в билдере? Условно чтобы был строго определен порядок вызова. builder.AddBeaf().AddKetchup() но не наоборот?
@ДмитрийКондратенко-б5ь
@ДмитрийКондратенко-б5ь 2 жыл бұрын
@codaza подскажи что за фишка в Program.cs. Без определения класса, без Main, не внутри метода - сразу объявлять переменные. Это что-то новенькое в c#? Где почитать можно? И да, отличный ролик, все супер понятно, спасибо большое за твой труд
@ДмитрийКондратенко-б5ь
@ДмитрийКондратенко-б5ь 2 жыл бұрын
А вот, нашёл: docs.microsoft.com/ru-ru/dotnet/csharp/fundamentals/program-structure/top-level-statements. Не знал об этом
@codaza-channel
@codaza-channel 2 жыл бұрын
Да, это новая возможность, которая появилась в C# 9. В целом, ничего сложного, просто можно не писать всю обвязку связанную с главной точкой входа - методом Main(). Мне нравится пользоваться этой возможностью для небольших учебных примеров.
@dizaynerak
@dizaynerak Жыл бұрын
метод Build*() должен быть один и он должен возвращать созданный объект. У вас даже в презентации все методы начинаются с With*(), а вы зачем-то взяли и забыли про это.
@ilyazakharov5050
@ilyazakharov5050 2 жыл бұрын
Если появится новый бургер, в который мы захотим добавлять совсем новый ингридиент, то придется добавить в интерфейс buildPardD() и потом во всех уже созданных классах имплементировать этот метод?
@codaza-channel
@codaza-channel 2 жыл бұрын
Это зависит от ваших целей и задач. Если добавление нового ингредиента потребует соответствующие изменения в тех местах, где создаётся объект, то ответ: да, нужно во всех классах имплементировать этот метод. Если же у вас большая кодовая база и новый метод не затрагивает её, то ответ: нет, достаточно унаследовать интерфейс IBuilder с добавлением нового метода и унаследовать класс строителя с реализацией унаследованного интерфейса. А можно реализовать унаследованный интерфейс в одном из классов-строителей где планируется его применение.
@dgdarkking266
@dgdarkking266 Жыл бұрын
Директор же в данном коде это паттерн фасад? А то я названия никак не запомню у шаблонов - прочитал пару статей и вдохновился чем-то новым, если такого ранее не юзал, а вот названия разом 20+ шаблонов хрен запомнишь
@ВикторияШипунова-и7ф
@ВикторияШипунова-и7ф 2 жыл бұрын
Здравствуйте! Подскажите, пожалуйста, на диаграмме UML какие все-таки связи протягивались бы от продукта к остальным объектам?
@codaza-channel
@codaza-channel 2 жыл бұрын
Здравствуйте! От Builder - связь зависимости (--->) От Client и Director зависит от бизнес-логики (может быть агрегация, композиция или ассоциация). В классическом виде, любые связи от Director к Product стоит избегать, но бывают ситуации, где этого сделать нельзя. Как правило, такие связи принято опускать, чтобы не загромождать суть решаемой проблемы.
@ВикторияШипунова-и7ф
@ВикторияШипунова-и7ф 2 жыл бұрын
@@codaza-channel Спасибо!
@redice8928
@redice8928 Жыл бұрын
про воппер забыли сказать, что он состоит из лука, там практически всё лук.
@Fenix72rus
@Fenix72rus 2 жыл бұрын
С текстом понятно, делаем Append и всё соединилось. А что с классами то делать? Есть у меня класс бургер. Как в него правильно уместить все ингредиенты, если ингредиенты сами являются классами.
@codaza-channel
@codaza-channel 2 жыл бұрын
Спасибо за отличный вопрос. В сущности, пример с бургером, практически не отличается от примера с отчётом. В случае когда в состав вашего класса входят другие классы, в этих вложенных классах Вы можете переопределить метод ToString(). Таким образом, в классе Burger, Вы сможете сможете получить строковое представление вложенного объекта. Кроме того, пример можно разнообразить. Представьте что повару (который готовит бургер) на экран монитора с заказами отображается не просто текст (бургер с котлетой и помидорами), а прям картинка и, возможно, рекомендации по приготовлению.
@Fenix72rus
@Fenix72rus 2 жыл бұрын
@@codaza-channel Спасибо! А если мне нужны не текстовые данные? У каждого класса свой тип данных, не сериализуемый в стринг. В таком случае можно использовать Builder?
@codaza-channel
@codaza-channel 2 жыл бұрын
Конечно, так как Builder - это не про "строки"; Builder - это про построение сложного объекта по шагам. В примере мы использовали ToString() у объекта отчёта в качестве наглядной реализации. Чтобы понять использовать паттерн Builder или нет, ответьте себе на три вопроса: 1. У меня есть сложный объект? 2. Существуют ли вариации создания этого объекта? 3. Возможно ли вынесение логики создания объекта? Если на все три вопроса Вы ответили "Да", то ваш выбор - паттерн Builder.
@AlienZom
@AlienZom 2 жыл бұрын
Две мясных котлеты гриль, специальный соус, сыр, огурцы, салат и лук, всё на булочке с кунжутом, только так и это ... не Воппер.
@saldy723
@saldy723 2 жыл бұрын
У меня по ходу создания бургера, вопрос созрел. Я бы хотел скрыть методы сборки бургера от клиента, но тогда шеф тоже не сможет собирать его. Как я мог бы инкапсулировать этот процесс?
@codaza-channel
@codaza-channel 2 жыл бұрын
Интересное желание 🙂 Не знаю зачем вам хотелось бы так сделать, но у меня есть для вас один вариант. Вы можете выделить строителя и шефа в отдельный проект и сделать методы сборки бургера с модификатором доступа internal. При таком подходе, методы будут видны в рамках сборки и не видны за её пределами.
@1ww-bg1lp
@1ww-bg1lp Жыл бұрын
new string('-',100)
@AzizjanAyupov_leo
@AzizjanAyupov_leo 2 жыл бұрын
}{идер
@sunly4887
@sunly4887 Жыл бұрын
показана самая отвратительная реализация паттерна. Хранить продукт в билдере это полный кринж
@vladlenbulatov1022
@vladlenbulatov1022 7 ай бұрын
Оччень!!! медленные слова в которых мало смыслы (котлеты, компоненты и т.п.) - ну очень (!) долго. Может расчет на тупых или иначе "обкуренных"? Первые пять минут можно уложить в одну. Совет (надеюсь) - "курите" меньше, может и высказывать свои мысли научитесь высказывать проще и быстрее...
@mr_smind
@mr_smind 5 ай бұрын
включи x2. Что касается видео то сделано очень хороши и без воды.
@uporka6924
@uporka6924 11 ай бұрын
Я за бигтейсти из мака
@uporka6924
@uporka6924 11 ай бұрын
Не понимаю зачем нужен интерфейс билдера. Ведь он обязует реализовать методы, название которых лишены смысла. А директора часто манагером обзывают
Master the Fluent Builder Design Pattern in C#
15:05
Milan Jovanović
Рет қаралды 29 М.
Can You Find Hulk's True Love? Real vs Fake Girlfriend Challenge | Roblox 3D
00:24
БУ, ИСПУГАЛСЯ?? #shorts
00:22
Паша Осадчий
Рет қаралды 3 МЛН
Миллионер | 3 - серия
36:09
Million Show
Рет қаралды 2,1 МЛН
Паттерны проектирования на Python: Паттерн Строитель
11:56
EngineerSpock - IT & программирование
Рет қаралды 31 М.
Паттерн Адаптер (Adapter)
5:08
ExtremeCode
Рет қаралды 96 М.
Builder Design Pattern Explained in 10 Minutes
10:45
Kantan Coding
Рет қаралды 33 М.
Паттерн Builder (Строитель). Как использовать в Unity?
16:12
Лавка Разработчика
Рет қаралды 4,1 М.
Марк Шевченко - Микросервисы на C#
1:02:10
«Осень». Самая большая загадка Windows XP
14:36
Девять десятых
Рет қаралды 1,3 МЛН
Вопросы собеседования на C# программиста
21:04
Програмысли Влог
Рет қаралды 68 М.
Can You Find Hulk's True Love? Real vs Fake Girlfriend Challenge | Roblox 3D
00:24