Шаблоны разработки ПО. Шаблоны GRASP

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

Sergey Nemchinskiy

Sergey Nemchinskiy

Күн бұрын

Пікірлер: 30
@yuriymykytenko2931
@yuriymykytenko2931 9 жыл бұрын
Пересмотрел почти все Ваши лекции. Лекции про паттерны одни из самых лучших, если не самые лучшие. Рассказ про соль программирования. Рассказать об этом может только тот, кто съел ее много...
@ilnurryazhapov
@ilnurryazhapov 5 жыл бұрын
Все что откопал на ютубе нормального это вот этот курс, лайк!
@dayoff8863
@dayoff8863 3 жыл бұрын
04:24 - Information Expert 13:52 - Creator 19:41 - Controller 27:20 - Low Coupling 41:30 - Polymorphism
@pashakretsu8951
@pashakretsu8951 7 жыл бұрын
Периодически просматриваю курс по паттернам и хочу сказать БОЛЬШОЕ СПАСИБО за четкостью и доступность лекций. Спасибо Вам Сергей что делитесь знаниями в столь-доступном формате
@andyrudi
@andyrudi 9 жыл бұрын
Классная лекция! Рассказано живо и с глубоким пониманием (возможных) проблем на практике!
@gor6821
@gor6821 11 жыл бұрын
С нетерпением жду продолжения.
@ВебМастер-ж5ъ
@ВебМастер-ж5ъ 7 жыл бұрын
Очень хорошо объясняете. Спасибо большое!
@zisoua
@zisoua 3 жыл бұрын
2008 - да наверно сейчас просматривается с ностальгией, и как тренинг читался и как слушался - уже наверно зубатые лиды, а тогда просто прознавали паттерны )
@telmertemp1284
@telmertemp1284 8 жыл бұрын
Огромное Спасибо за лекцию!
@romantsyupryk3009
@romantsyupryk3009 4 жыл бұрын
Thanks so much for this video tutorial.
@KulaGGin
@KulaGGin 3 жыл бұрын
1:04:00 "Для того, чтобы провести хороший рефакторинг чужого сложного и запущенного кода..." Нужно написать end-to-end, integration и unit тесты на весь этот кринж, и переписать весь этот кринж, используя TDD(вначале опираясь только на end-to-end, integration и unit тесты кринж кода, а потом все больше опираясь на свои unit, integration и end-to-end тесты, написанные при переписываниии кода с использованием методологии TDD), Clean Code и Clean Architecture Дяди Боба. А потом рефакторить как хошь. В конце получаешь чистый протестированный код, написанный при помощи методологии TDD, который точно работает правильно, и ты это знаешь. И все остальные это знают. А тем, кто не знают и не верят, ты можешь доказать это без слов при помощи сети автоматизированных тестов в течение нескольких секунд.
@Fateslav
@Fateslav 5 жыл бұрын
19:00 я против формулировки того, что класс должен отвечать только за одно. Попробуем смоделировать кота - он может кушать, прыгать, охотиться. Или современный телефон: он умеет звонить, запускать приложения, снимать на камеру и т.п. Это не противоречит ни принципам clean, ни принципам OOD. Там формулировка другая: класс должен иметь только одну причину для изменения. Или: нужно объединять единицы функционала, которые изменяются по одним причинам и разъединять функционалы, которые меняются по разным причинам
@senegal8bit824
@senegal8bit824 8 ай бұрын
кайф, спасибо!
@gru74ik
@gru74ik 7 жыл бұрын
32:17 Насчёт объектов типа "Helper", aka "Утилитный класс". 33:26 А почему не использовать паттерн "Декоратор"? Например, как вот тут как раз про строки человек объясняет: kzbin.info/www/bejne/qprTpICif7Bpm80
@ТимурСафаров-в1ч
@ТимурСафаров-в1ч 2 жыл бұрын
про потоки в Controller подходит объяснение только для многопоточных языков, для PHP это не актуально например.
@gor6821
@gor6821 11 жыл бұрын
Мне кажется, Марк Симан в своей книге "Внедрение зависимостей в .NET" паттерн Creator назвал главным антипаттерном для DI/IoC под названием Control Freak и призвал всячески избегать его. Смысл в том, чтобы вынести все зависимости (создание и внедрение объектов ) на верх иерархии в Composition Root ,например, в ASP.NET MVC это фабрика контроллеров. И там, используя контейнер DI/IoC создавать и внедрять зависимости. Сергей, что Вы об этом думаете?
@gor6821
@gor6821 11 жыл бұрын
***** Я ввел Вас в заблуждение дотнетом. Это имеет такое же отношение и к Java. Вот пример. На уровне бизнес-логики нам нужно использовать объект из уровня доступа к данным. Исходя из шаблона Creator и собственной логики, мы создаем объект и используем его. Но вот незадача - уровень доступа к данным делает Ваш сосед и он не готов. Да и протестировать наш объект не очень получается. Так вот Марк Симан советует создать объект из уровня доступа к данным где-нибудь в Main() ака Composition Root, и внедрить этот объект ,например, через конструктор в наш объект бизнес логики. Теперь и отсутствие уровня доступа к данным не мешает и вообще полный TDD. На самом деле и объект бизнес-логики создается в Main(), чтобы разорвать связь с уровнем UI. Кстати созданием и уничтожением объектов в таком случае должен заниматься контейнер DI/IoC. Похоже, что постепенно некоторые паттерны отмирают. Еще недавно Фаулер говорил о Service Locator и вот Симан его объявляет антипаттерном. То есть выходит, что и Service Locator и Dependency Injection являются подмножествами Inversion of Control, но SL по отношению к DI является антипаттерном. Может я книжек перечитал?
@stepanenkostanislav5877
@stepanenkostanislav5877 8 жыл бұрын
Service Locator действительно является в некотором роде антипаттерном, тк он по сути своей God object и позволяет создавать кучу зависимостей в одном классе, нарушая при этом инкапсуляцию. Конечно этого можно избежать строго передав зависимости в конструктор класса, но сама возможность такого поворота событий и делает его антипаттерном. Возвращаясь к первому вопросу, шаблон Creator по моему субъективному мнению он помогает указать (особенно в сущностях ORM), кто за кого отвечает. Таким образом четко проводятся границы ответственности между классами, не позволяя (по соглашению, конечно) создавать экземпляры по всему приложения без логически связанных классов.
@ВуйловДмитрий
@ВуйловДмитрий 7 жыл бұрын
Нет, вы молодец
@ДмитрийРафалович-ц6ш
@ДмитрийРафалович-ц6ш 8 жыл бұрын
а можно попросить Вас сбросить предлагаемый слушателям реферат по шаблонам. совершенно не хочется прерываться на конспектирование, уж очень интересно рассказываете.
@ДмитрийРафалович-ц6ш
@ДмитрийРафалович-ц6ш 8 жыл бұрын
спасибо.
@DenisG631
@DenisG631 10 жыл бұрын
Спасибо большое за видео. Очень познавательно и интересно, однако как мне кажется, кроме УМЛ Диаграмм не было бы лишним показывать код (правильный/не правильный)
@Lecker9419
@Lecker9419 10 жыл бұрын
***** согласен с Денисом , отличное видео но с кодом всегда понятнее о чём конкретно идёт речь. Спасибо.
@rijen42
@rijen42 9 жыл бұрын
А можно поподробнее про интерфейсы? Допустим у меня есть класс(NetworkEnvironment), который в зависимости от входящих параметров инициализируется с теми или иными переменными окружения. Его наследует интерфейс аторизации пользователя. Интерфейс реализуют два класса. Например UserSQL и UserNoSql Кто собственно выбирает какую из реализаций использовать? Судя по картинке, этим занимается интерфейс, но для этого в нём должен быть реализован тот же свич, что нереально.
@rijen42
@rijen42 9 жыл бұрын
* Интерфейс пользователя классы должны выбираться на основании наименования окружения, определенного в NetworkEnvironment
@EshkinKot1980
@EshkinKot1980 5 жыл бұрын
Мне вот интересно, вы сами то представляете кусок кода весом в 300 МиБ, тем более индусского?
@mchi-b9l
@mchi-b9l 6 жыл бұрын
Все замечательно. Спасибо огромное, но Cohesion произносится не так. Ухо режет...
@unclebob7037
@unclebob7037 8 жыл бұрын
почему то старые лекции по этой же теме больше нравятся, хотя там информацию и хуже видно
@unclebob7037
@unclebob7037 8 жыл бұрын
нет, в том то и дело что формально подача материала в новых видео как минимум не хуже, но в старых лекциях вы больше учитель, а в новых больше преподаватель. в старых вам интересен процесс обучения учеников(вы в процессе, потоке, возможно это и от студентов зависит), в новых появилось ощущение рутины и усталости некоторой, это влияет на легкость усвоение и просмотра лекций. в старых лекциях вам процесс был в удовольствие в большей степени, рассказали шаблон и смотрите на скрипение в мозгах у студентов, а в новых вы говорите - я понимаю что вам трудно. старые, пока только 2 серии посмотрел, они как сериал на одном дыхании смотрятся как любимый сериал. в любом случае лучше ваших лекций я не видел
@unclebob7037
@unclebob7037 8 жыл бұрын
а есть платные лекции по другим темам? в смысле не тренинги а именно standalone записи? где смотреть информацию? на email писать?
Chain Game Strong ⛓️
00:21
Anwar Jibawi
Рет қаралды 41 МЛН
So Cute 🥰 who is better?
00:15
dednahype
Рет қаралды 19 МЛН
Шаблоны разработки ПО. Шаблоны GoF. Часть 4
1:16:20
G.R.A.S.P | шаблоны проектирования
12:09
Шаблоны разработки. Шаблоны GRASP
46:04
Sergey Nemchinskiy
Рет қаралды 41 М.
Шаблоны разработки ПО. Вводная лекция
1:09:44
Sergey Nemchinskiy
Рет қаралды 18 М.
Шаблоны разработки ПО. Шаблоны GoF. Часть 1
43:06
Шаблоны разработки. Шаблоны GoF 5
54:52
Sergey Nemchinskiy
Рет қаралды 12 М.