Что такое архитектура приложения. Паттерны MVC, MVP, MVVM.

Поділитися
Вставка
  • Опубліковано 16 січ 2025

КОМЕНТАРІ • 97

  • @arhitutorials
    @arhitutorials  3 роки тому +112

    Сегодня у автора канала день рождения. Приму поздравления в любом виде)

    • @quantumtv9509
      @quantumtv9509 3 роки тому

      Сергей, с днём рождения! Желаю счастья, здоровья, успехов и творческого процветания! Продолжай выпускать видосы, мне они очень полезны! Спасибо за твой труд!)

    • @ramilskl
      @ramilskl 3 роки тому

      С Днем Рождения! Спасибо за Ваши труды! Всего наилучшего!

    • @Yornero
      @Yornero 3 роки тому

      С днем рождения, большое спасибо за ролики)

    • @Эсканор-у5р
      @Эсканор-у5р 3 роки тому

      Поздравляю с днем рождения! Продолжай развивать свой канал ведь это лучший контент по Java разработке из того, что есть.

    • @ОлегКостенецкий
      @ОлегКостенецкий 3 роки тому

      С Днём Рождения)

  • @РустамИсаков-ж1в
    @РустамИсаков-ж1в 2 роки тому +11

    Среди програмистов Вы редкий талант, который может человеческим языком доходчиво обьяснить начинающему

  • @ivan_p3
    @ivan_p3 3 роки тому +42

    За 15 минут узнал больше, чем за всякие курсы из 7 видео по 20 минут. Спасибо!

  • @КирРик-у4ю
    @КирРик-у4ю 3 роки тому +5

    Мужик, спасибо тебе большое. Действительно сухая выжимка информации без лишнего словоблудия. Как же такое можно отыскать...

  • @АнтониоПанотти
    @АнтониоПанотти Рік тому +4

    "Проще показать проблему, а потом обозначить, как она решается" - вот за этот подход, который и демонстрирует видео целиком, я бы поставил +100500 лайков. Я действительно про эту долбанную архитектуру столько посмотрел, но почти никто не хочет показать, как это работает в коде. Спасибо вам огромное

  • @LisTyrist
    @LisTyrist 2 роки тому +3

    Настолько всё понятно объяснил! НАКОНЕЦ-ТО поняла, где в схеме MVVM находится пользователь, а где бизнес-логика))) Спасибо!

  • @ХаннаФрея
    @ХаннаФрея Рік тому

    Спасибо вам большое, очень интересное подробное объяснение. Рада, что нашла ваш канал!

  • @aaivanyutenko
    @aaivanyutenko Рік тому

    Спасибо за короткое и предельно содержательное видео!

  • @АндрейБабаш-ю9п
    @АндрейБабаш-ю9п 3 роки тому +4

    Очень полезные и понятные уроки. Спасибо за Ваш труд

  • @vladimirmartynyuk5476
    @vladimirmartynyuk5476 3 роки тому

    Большое спасибо и с прошедшим !) Видео очень помогло !)

  • @yushchenkoalexey
    @yushchenkoalexey 3 роки тому +2

    Очень полезное видео, как всегда, в общем :) Большое спасибо!

  • @Доброе_Утро
    @Доброе_Утро 6 місяців тому

    Это лучшее объяснение, что я видел, хотя и не изучаю java

  • @ivanstrelka3448
    @ivanstrelka3448 2 роки тому

    Очень круто! Спасибо

  • @АртемСапунов-н5д
    @АртемСапунов-н5д 3 роки тому +2

    Ты очень круто обьясняешь архитектуру. Мне Java не интересна, но если будут еще подобные ролики, то подписка обеспечена

  • @withotsoul7252
    @withotsoul7252 2 роки тому

    Спасибо! Четкий видосик) Вы классный рассказчик!

  • @jiofef
    @jiofef 2 роки тому

    Благодарю за видео, всё доходчиво объяснил

  • @VladiGuitar87
    @VladiGuitar87 Рік тому

    красаучег, четко пояснил) привет из Нюрнберга!

  • @oigen1110
    @oigen1110 2 роки тому

    Спасибо большое Сергей. Много слышал об этом, но не до конца всё понимал. Всё очень понятно и просто объяснено, как раз как и хотелось бы. Сразу стало понятнее. Теперь я увереннее могу отвечать на собеседовании что мне известно об этом.

  • @mr.simiys6454
    @mr.simiys6454 2 роки тому

    Великолепный контент!

  • @AlexKono999
    @AlexKono999 2 роки тому

    лучшее видео про паттерны

  • @bobrinoeschaste
    @bobrinoeschaste Рік тому

    Нигде не мог найти толкового объяснения паттернов. Везде сухие статьи и вода.
    Спасибо автору!

  • @ereteysabler5997
    @ereteysabler5997 2 роки тому

    Спасибо, очень было интересно

  • @MrWellmos
    @MrWellmos Рік тому

    Спасибо!

  • @ВиталийСибагатуллин-г4ю

    Спасибо, достаточно понятное видео.
    Хотя было бы неплохо выделять или подсвечивать те команды/переменные и пр. элементы кода, о которых в даный момент идёт речь.

  • @Boyanist_so_stagem
    @Boyanist_so_stagem 3 роки тому

    Спасибо, все очень понятно.

  • @МаксимИсаев-ъ5о
    @МаксимИсаев-ъ5о 2 роки тому

    Моё почтение!

  • @kiriuskvartos6199
    @kiriuskvartos6199 2 роки тому

    С днем рождения!!!

  • @truth_Of_The_Life
    @truth_Of_The_Life 3 роки тому +2

    С днем рождения! Всех бла тебе! Раскажи о поисковых системах google и т.д. своим понятным языком. Принципы их работы. Ну а если что то покажешь на практике вообще огонь будет. Еще раз с днем рождения гений! Желаю тебе денег и здоровья!

    • @MrChelovek68
      @MrChelovek68 2 роки тому

      Блин,я не автор канала,но кхм. Поисковые краулеры кхм,если судить по примеру из шилдта и с хабра, просто ходят по ссылкам,качают страницы и сайты,а дальше сохраняют в бд. Сам сайт гугла это просто сайт,так же как и яндекса и любого другого поисковика. Помнится на хабре была статья как раз о написании поисковика. Для одного хабра в общем ушло около 600 гигов хранилища. Та и смысл,чтобы сделать поисковик для интернетов,нужно сначала скачать интернеты. Как то так. Надеюсь, люди поправят.

  • @ElChampi0
    @ElChampi0 Рік тому

    Вот как раз и интересно обсуждать то, что не так очевидно

  • @RainbowJet1
    @RainbowJet1 Рік тому +1

    Наконец-то я понял в чём отличие MVP от MVVM. Отличие в том, что при MVVM подписчиков(вьюх) может быть сколько угодно, и каждый раз когда от модели во ViewModel прилетает изменение, все подписанные вьюхи об этом уведомляются и изменяются. А при MVP каждый Презентор подписан на одну конкретную вьюху. Соответственно, если вьюх динамическое количество, то память засоряется кучей Презенторов на каждую вьюху. Если я правильно понял, получается MVVM лучше?

    • @ffjhfjidyfourho
      @ffjhfjidyfourho Рік тому

      Чаво?! Непонятно нечаво! 😂

  • @sloppyaerials4463
    @sloppyaerials4463 3 роки тому

    Спасибо за хоткей с методами, не знал его

  • @AleksandrShtomov
    @AleksandrShtomov 3 роки тому

    Лучший видос по архитектурным паттернам. Еще бы ссылка на исходники, вообще б цены не было))

  • @volodymyrholiev1187
    @volodymyrholiev1187 3 роки тому

    С днём рождения! Всех благ)))

  • @releyshic
    @releyshic 6 місяців тому

    а какой набор паттернов на бэкенде?

  • @auratarus
    @auratarus 3 роки тому

    спасибо, наглядно

  • @olegzakhozhiy2133
    @olegzakhozhiy2133 2 роки тому

    Спасибо. Доходчиво объяснили суть и цель архитектурных паттернов, однако очень не хватило немного гайда. О том какова была компановка и иерархия каталогов и их файлов?! И какова структура стала после рефакторинга?! И немного подробней и наглядней пройтись по взаимодействию архитектурных разделений.

  • @g1ldman
    @g1ldman Рік тому

    Самое понятное объяснение mvvm

  • @dmitriykonopinskiy3793
    @dmitriykonopinskiy3793 Рік тому

    а почему в MVC стрелка от View к контроллеру, а не от юзера к контроллеру?

  • @ЕвгенийА-з6у
    @ЕвгенийА-з6у 3 роки тому

    Здравствуйте. Если есть ссылка на репу с рассмотренными примерами добавьте, плз, в описание видео.

    • @arhitutorials
      @arhitutorials  3 роки тому +2

      К сожалению большая часть примеров взята из реальных коммерческих приложений, исходники мне не принадлежат. Чтоб показать в ролике фрагменты исходников, специально запрашивал разрешение у компании - владельца.

  • @АлексейВовченко-р9ь
    @АлексейВовченко-р9ь 7 місяців тому

    было бы хорошо увидеть примеры одного и того же элементарного приложения, написанного в трех разных стилях, потому что на словах не очень понятно

  • @Vladyslav_Sliusar
    @Vladyslav_Sliusar 3 роки тому

    Учу JavaScript, первое годное видео о MVC, MVP)

  • @dnr_8365
    @dnr_8365 Рік тому

    В-деревья рулят не только в бд)

  • @mikhailshirokov8464
    @mikhailshirokov8464 3 роки тому

    Спасибо за видео, много для себя почерпнул нового. Про MVP прошу уточнить: Presenter в приложении один или для каждого представления отдельный? Могу я допустим создать 1 Presenter, в котором будет сконцентрировано взаимодействие всех представлений и их связь с моделью (через коллбэки)? В этом случае модель и представления ничего не будут знать друг о друге, а общаться только через Presenter.

    • @arhitutorials
      @arhitutorials  3 роки тому +1

      Для каждого представления свой презентер.
      Если смешать логику работы с разными представлениями в одном классе, очень тяжело будет с этим работать.

    • @mikhailshirokov8464
      @mikhailshirokov8464 3 роки тому

      ​@@arhitutorials, тогда другой вопрос: кто будет выбирать нужный презентер в нужный момент? Кто будет создавать презентеры и хранить ссылки на них? В случае с Android - Activity?

    • @arhitutorials
      @arhitutorials  3 роки тому

      @@mikhailshirokov8464 По разному бывает. В простейшем случае Activity. Но как тогда решить проблему пересоздания Activity при повороте экрана? Значит ссылку на презентер следует хранить где-то в другом месте.
      Создавать тоже можно по разному. Например, популярный вариант - внедрение зависимостей с помощью Dagger.
      Часто это все идет вместе с тестами. Если презентер не зависит от Андроид фреймворка, то его логику можно тестировать обычными юнит тестами. Отчасти ради этого весь этот MVP и затевается.
      Если для реализации паттерна MVVM есть общепринятые компоненты и гайдлайны от гугла, то MVP в этом смысле не стандартизирован. Сколько проектов с MVP столько и реализаций. Каждый делает в меру своего понимания.

  • @Денис-ж3ф5р
    @Денис-ж3ф5р 3 роки тому

    Респект от iOS программиста

  • @jurimudry62
    @jurimudry62 3 роки тому

    С днём рождения!

  • @Денис-д1у2д
    @Денис-д1у2д 3 роки тому

    А точно MVP, MVVM это именно архитектурный паттерн? Или может это презентационный?

    • @arhitutorials
      @arhitutorials  3 роки тому

      Это как вам угодно. Я бы сказал, что так как паттерн затрагивает несколько слоев приложения, то архитектурный. В эти слои входит также и слой презентации, по этому к презентации это тоже отношение имеет.
      Под слоями я подразумеваю эти:
      raw.githubusercontent.com/android10/Sample-Data/master/Android-CleanArchitecture/clean_architecture.png

  • @_mirai
    @_mirai 2 роки тому

    4:20 заканчивается объяснение для чего это нужно

  • @kafychannel
    @kafychannel 3 роки тому

    С днем рождения

  • @ЯковЛазоренко
    @ЯковЛазоренко Рік тому

    Существует некоторая путаница в понятиях. У разработчиков серверной части (бэк-энд) клиент-серверных приложений под MVC подразумевается MVP (MVC = MVP). А у разработчиков десктоп и мобильных приложений MVC и MVP это разные понятия.

  • @Mr4oxide
    @Mr4oxide 3 роки тому

    Спасибо большое за объяснения, наконец-то нашел что-то краткое и четкое. По MVVM закрыли вопрос по поводу того, является ли гугловский компонент ViewModel тем же, что и термин ViewModel из Model-View-ViewModel, а также по поводу того, что компонент ViewModel может быть замещен на что-то свое. В общем, посмотрел с удовольствием, пользой и большим интересом. Спасибо!

  • @alice_wolfraider_gamdv
    @alice_wolfraider_gamdv 3 роки тому

    nice-nice 50

  • @AA-ld2ix
    @AA-ld2ix Рік тому

    Гигант

  • @supfiger
    @supfiger 2 роки тому

    РефактОринг)

  • @mrtwon8638
    @mrtwon8638 3 роки тому

    3:22 Outofmemory программиста

  • @futureman8340
    @futureman8340 3 роки тому +1

    честно я пытался, но ушел в трейдинг )) но программист - это ГОЛОВА!!! И даже прошел почти курс по java...

    • @arhitutorials
      @arhitutorials  3 роки тому +1

      Я бы может тоже ушел бы в трейдинг, если бы это приносило прибыль. Как-то писал искусственный интеллект для прогнозирования курсов валют. Скормил ему исторические данные данные за 10 лет и получил результат, что каких-то существенных закономерностей не обнаружено) Данные близки к случайным. С тех пор я такими вещами не занимаюсь, так как смысла нет.

    • @futureman8340
      @futureman8340 3 роки тому

      @@arhitutorials ну это подход программиста... Тут надо руками... Когда сам а не робот довольно прибыльно...

    • @NotAFaken
      @NotAFaken 3 роки тому

      а я учу джаву) и трейдю))

    • @arhitutorials
      @arhitutorials  3 роки тому +1

      @@NotAFaken Трейдинг - это рулетка. Сегодня выиграл, завтра проиграл... И только казино стабильно в плюсе)

    • @NotAFaken
      @NotAFaken 3 роки тому

      @@arhitutorials именно поэтому и учу джаву)))))))

  • @sergekristal3100
    @sergekristal3100 3 роки тому

    MVC был предложен 60 лет назад.

  • @ffh2000
    @ffh2000 2 роки тому

    Так и не понятно, зачем же разбивать один большой Activity на кучу классов. Так шаришься в одном файле, а так еще все то же самое по разным файлам + обвязки добавилось.

    • @drfclub777
      @drfclub777 Рік тому

      у тебя каждая кнопка отвечает за свой функционал, и проще будет редачить такой функционал в отдельном файле, а уже саму кнопочку наблюдать в Activity
      к тому же, такой подход позволяет отцепить функционал одной кнопочки в целом от проекта и пристроить к другому проекту, чуть подредачив, а если все будет в одной Activity, то тогда каждый проект придется писать с нуля, а тут у тебя считай есть готовые отдельные элементы, которые можно юзать в других проектах
      с другой стороны, есть проблема с тем, когда одни события зависят от других, что также подметил автор видео
      еще когда у тебя тысяч 100 строк в классе, то шариться в файле становится кратно сложнее, а вероятность сломать проект от одного маленького действия достигает 100%

    • @FyUajYpUlM39
      @FyUajYpUlM39 7 місяців тому

      Проще открыть несколько вкладок и переключаться между ними одним нажатием кнопки и сразу видеть нужный фрагмент кода, чем скроллить туда-сюда и каждый раз вискивать глазами нужный кусок.

  • @uranproject
    @uranproject 3 роки тому

    апогей комьюнити андроид по архитектуре МВП... то ли чаю выпить, то ли повесится

    • @arhitutorials
      @arhitutorials  3 роки тому

      А что вас удивляет? Андроид - это фрондэнд, и типовая архитектура соответствующая:
      github.com/android10/Android-CleanArchitecture

    • @uranproject
      @uranproject 3 роки тому

      да я всего лишь по комьюнити и разбору архитектур плачу. Вы скидываете пример гугла, от этого еще больнее в сердце

  • @Mazaxict11
    @Mazaxict11 Рік тому

    Вы грамотно объяснили паттерны, но ваш код уж извините пахнет плохо. Первый пример который вы показали для MVC ничего общего с этой архитектурой не имеет, ваши контроллеры это тоже view которые вы просто разбили на кусочки и потом напихали в одну Активити. Этот паттерн реализуется совсем не так 😊

    • @arhitutorials
      @arhitutorials  Рік тому

      Я считаю, что первичным является критерий принадлежности к определенному слою абстракции. Если объект содержит в себе логику презентации, то не важно как он устроен, по фэншую или нет, - это слой презентации. Слой презентации - это никак не может быть View, как не крути.
      Хорошо пахнет или плохо - это другой вопрос.

  • @alexkoty5877
    @alexkoty5877 Рік тому

    Сергей, привет. Ты в видео разрешил тебя покритиковать. Мне видео вообще не зашло. Я ожидал что ты будешь показывать не просто какие-то методы и переменные, покажешь вот класс - это вьюмодель, вот другой класс - модель, вот вьшка, взаимодействют они так и так. А у тебя просто какой то код на экране и куча текста идет не понятно про что

  • @dekus80
    @dekus80 2 роки тому

    Для тех кто так и не осилил родной язык: pattern - шаблон. Не Pattern проектирования (уж опредились с языком из двух), а шаблон проектирования. Не возможно слушать.
    P/S/ Для так же плохо владеющих и английским, Live это лайв, а не лив. Программист который даже говорить не смог научиться? мда...Андроид и java в 21 году, мда...

    • @arhitutorials
      @arhitutorials  2 роки тому

      "Шаблон" по английски - это template. А pattern означает "образец".
      Слово паттерн в русском языке есть и оно передает смысл английского оригинала лучше, чем слово шаблон.
      При чтении/написании кода нормально произносить слова в латинской транскрипции а не в английской. Потому что латинская транслитерация понятна всем, даже тем, кто не знает правил чтения английского языка.
      Java язык простой. Синтаксис элементарный, читается легко. Вы предлагаете новичков Котлином насиловать? Гуманнее надо быть.

    • @dekus80
      @dekus80 2 роки тому

      @@arhitutorials
      Бывает что одно слово можно перевести на несколько, не в курсе?
      Открой хотя бы google translate, перевод английский - русский и напиши слово pattern. Слово паттерн есть только у таких, которые не осилили русский, что переводится это с английского как шаблон. У них и гайды и т.д.

    • @arhitutorials
      @arhitutorials  2 роки тому

      @@dekus80 Вы дальше гугл транслейта языка не знаете? Слова имеют разный смысл. Например слова defence и protection - гугл транслейт переведет оба как защита. Хотя это два разных слова и смысл у них разный. Defence - соответствует русскому "оборона", а protection - да, защита кого-то от чего-то.
      Когда работаете с языками нужно вникать в реальный смысл слов, с которыми имеете дело, иначе так и будете глупости нести.

    • @MrChelovek68
      @MrChelovek68 2 роки тому

      Не срача для. Хотя я тот еще токсичный собеседник. Но паттерн реально переводится как шаблон. Это по сути то и есть шаблон. Мб неоднозначность связана со свойствами языков. Но опять же,паттерн -шаблон реализации того или иного действия🤔🤔 в остальном, та смысл цепляться к словам. Када суть интереснее и хорошо изложена,спасибо. Месяц назад я б душу дьяволу отдал за mvvm👌

    • @arhitutorials
      @arhitutorials  2 роки тому +1

      @@MrChelovek68 Ну тут вообще товарищ доказывал, что паттерн - это иностранное слово, а шаблон - это русское. Хотя на самом деле шаблон - это такое же самое заимствование, только из французского. Короче мрак...

  • @IuriiBelov
    @IuriiBelov Рік тому

    Спасибо!