Шаблоны разработки. Шаблоны GoF 5

Sdílet
Vložit
  • čas přidán 22. 08. 2024
  • Обновленный курс GRASP and GoF Design patterns - bit.ly/3AG79eG
    💪 ПРОКАЧАЙ СВОИ ХАРД-СКИЛЛЫ ЗА 2 МЕСЯЦА!
    Продолжение курса "Шаблоны разработки программного обеспечения". Шаблоны GOF 5
    Плейлист • Шаблоны разработки. Вв...
    Все материалы курса лекций (включая конспект лекций) на моем канале на SlideShare:www.slideshare....
    Изучение C#/.Net bit.ly/2DXGAIt
    Изучение WP Develope bit.ly/2DWTnuZ

Komentáře • 20

  • @pingvincible
    @pingvincible Před 10 lety +14

    Сергей, ваши лекции - это то, что я очень долго искал, просто открытие! Спасибо большое за ваш труд!

  • @Stalker-of6bn
    @Stalker-of6bn Před 3 lety +1

    Совершенно бесподобно рассказано про MVC даже для текущей реальности 2021. Даже несмотря на новые расширения MVVM, MVP и прочие. Сергей произносит слова (иногда вскользь - как бы между делом) так важные для "окончательного" понимания! Спасибо, Сергей!

  • @nikolayshubenkov380
    @nikolayshubenkov380 Před 10 lety +2

    Огромное вам спасибо за лекции! вы очень крутой! одно удовольствие смотреть лекции

  • @Das.Kleine.Krokodil
    @Das.Kleine.Krokodil Před rokem

    Шикарные лекции

  • @SergeyD
    @SergeyD Před 3 lety +1

    Хороший пример для цепочки обязанностей - распаковка многократно инкапсулированных данных.
    На примере TCP/IP:
    Есть базовый класс Layer
    Цепочка для tcp пакета:
    EtherLayer -> IpLayer -> TcpLayer
    Каждый Layer получает PDU с (которым он умеет работать), извлекает хидеры (из которых определяет чьи это данные) и PDU который передает ответственному обработчику.

  • @ixonjava
    @ixonjava Před rokem

    00:04 State как делать таблицу переходов
    06:58 Strategy
    13:20 Прыжок в сторону (или как программист читает код)
    16:24 Strategy заключение
    17:32 Chain of Responsibility
    32:32 Template method
    40:51 MVC

  • @aleksandrignatov9328
    @aleksandrignatov9328 Před 9 lety

    Как обычно, очень полезно!
    Напишите плиз, 3,5 или 7 паттернов, которые надо знать обязательно (из Вашего опыта) ?

  • @nikolayshubenkov380
    @nikolayshubenkov380 Před 10 lety +1

    Единственный момент, то, что сейчас пробуют вместо MVC использовать MV-VC

  • @AngryCellophane
    @AngryCellophane Před 10 lety +1

    Сергей, планируются ли видео по энтерпрайз шаблонам?

  • @romankutsenko118
    @romankutsenko118 Před 8 lety

    Здравствуйте! Когда Вы рассказывали о паттерне Шаблонный метод, Вы сказали, что когда мы выносим родительский класс, то он обязательно должен быть абстрактным и не может быть интерфейсом. В Java 8 в интерфейсах появились дефолтные методы, следовательно этот класс можно делать интерфейсом.

  • @sotoninja
    @sotoninja Před 10 lety

    Сергей, а что было в третьей части? А то после второй - пятая..

  • @Stalker-of6bn
    @Stalker-of6bn Před 3 lety

    "Ни один компилятор не скажет, что вы припустили переход в состояние..." - это так, но ведь TDD практика приходит на помощь?

  • @MegaDjango13
    @MegaDjango13 Před 7 lety

    Здравствуйте! Вы говорили о том что шаблон State избавляет нас от скопления ифов, но получается что мы от части декомпозируем эти ифы по классам ну и уменьшем их колличество для удобства чтения, но полностью они не исчезают. Ведь все равно нам придется написать if для выбора какую конкретно стратегию выбрать(даже если этот выбор будет в отдельном классе)... И если вариантов много то вязанка может быть не маленькая. Или я что-то не так понял?

    • @MegaDjango13
      @MegaDjango13 Před 7 lety

      Хоть и совсем немного но я надеялся на чудо избавления от if else))). Большое спасибо за ответ.

  • @EshkinKot1980
    @EshkinKot1980 Před 6 lety

    Огромное спасибо за лекции.
    Но по поводу MVC, я с вами не соглашусь.
    А как же MVP? Работая с фрэймворком GWTPlatform, я убедился в мощи MVP на клиенте. MVP позволяет сделать иерархию из презентеров, например презентер главной страницы может подключить в себя презентер меню (при этом выбрать какой именно), презентер шапки или правого блока. Причем каждый из вышеописанных презентеров может иметь любую глубину вложенности. В классическом MVC это весьма затруднительно сделать, есть конечно HMVC, но он намного сложнее, и на мой взгляд, является костылем.
    А как же компонентная архитектура используемая в агуляре 2,4?
    Для настольного приложения MVC может и панацея, но для веба там дофига косяков.
    Вообще, рассказывая о MVC, вы нарисовали какого-то сферического коня в вакууме. Вы нарисовали то, что сейчас на википедии лежит, но это статья за последние пару лет переписывалась раза 3 точно и как только эти стрелочки не рисовали.
    А что касается реальной жизни, то Zend, Symfony, Yii, OnPHP реализуют это не так. Сложный веб-бэкенд писал только на PHP, как на других языках это делается не знаю, но OnPHP содран с какого-то из джава фрэймворков.
    По поводу стрелки от C к V, вот пример:
    пользователь бронирует апартаменты, и на клиенте это действие происходит пошагово. В случае валидации шага контроллер возвращает ответ клиенту, причем иногда сообщает ошибку, а это данные. Боле того, в данном примере в городе, который ввел пользователь, может апартаментов не оказаться, и проверить это - задача контроллера (в противном случае V напрямую запрашивает M), таким образом это получается еще стрелка от M к С.
    Поправьте меня, пожалуйста, если я ошибаюсь.

    • @0imax
      @0imax Před 6 lety

      По поводу стрелки от C к V
      Смотря как организовывать контроллер. Если он просто превращает запросы пользователя в вызовы модели, то я бы поместил валидацию введенных данных в методы модели, и тогда никаких стрелочек от C к V не появляется. Ведь модель лучше знает, какие ей нужны данные, и когда проверка живёт там же, где эти данные обрабатываются, при изменении в модели не придётся лазить в контроллер и что-то там менять. А если в контроллере дофига кода, то насовывать в него ещё и проверки... Мне вариант с проверками в модели нравится больше.

  • @xfg9183
    @xfg9183 Před 7 lety

    Подскажите, можно ли немного видоизменять паттерны под свою задачу? Скажем, если в моей бизнес-задаче строго 2 наблюдателя, можно ли реализовать Observer без addObserver/removeObserver методов и передать наблюдателей сразу через конструктор?

    • @xfg9183
      @xfg9183 Před 7 lety

      Спасибо за ответ.

    • @andriiostashevskyi3465
      @andriiostashevskyi3465 Před 4 lety

      Можно все, но надо точно знать что количество наблюдателей и способи подписки будут одинаковими. Ну или наблюдателей не станет больше

    • @HuKuTa944
      @HuKuTa944 Před 3 lety

      Я понимаю, что прошло 3 года, и вы уже вероятно решили свою задачу, но что, если воспользоваться паттерном посредник (mediator)?