Что такое архитектура приложения. Паттерны MVC, MVP, MVVM.
Данное видео - это краткая вводная лекция в архитектуру приложений. В нем я рассказываю о том, что такое архитектура, и какую роль она играет при развитии программного продукта. Так же пробежимся по паттернам проектирования, которые используются для построения пользовательского интерфейса, таким как:
Model-View-Controller
Model-View-Presenter
Model-View-ViewModel
Поддержать канал💰:
yoomoney.ru/to/410018856244871
Группа в Telegram:
t.me/ArhiTutorials
#ArhiTutorialsJava #ityoutubersru
Пікірлер: 95
Сегодня у автора канала день рождения. Приму поздравления в любом виде)
@quantumtv9509
3 жыл бұрын
Сергей, с днём рождения! Желаю счастья, здоровья, успехов и творческого процветания! Продолжай выпускать видосы, мне они очень полезны! Спасибо за твой труд!)
@ramilskl
3 жыл бұрын
С Днем Рождения! Спасибо за Ваши труды! Всего наилучшего!
@Yornero
3 жыл бұрын
С днем рождения, большое спасибо за ролики)
@user-yh8mj6pf9k
3 жыл бұрын
Поздравляю с днем рождения! Продолжай развивать свой канал ведь это лучший контент по Java разработке из того, что есть.
@user-zk9xo2hs6x
3 жыл бұрын
С Днём Рождения)
Среди програмистов Вы редкий талант, который может человеческим языком доходчиво обьяснить начинающему
"Проще показать проблему, а потом обозначить, как она решается" - вот за этот подход, который и демонстрирует видео целиком, я бы поставил +100500 лайков. Я действительно про эту долбанную архитектуру столько посмотрел, но почти никто не хочет показать, как это работает в коде. Спасибо вам огромное
За 15 минут узнал больше, чем за всякие курсы из 7 видео по 20 минут. Спасибо!
Мужик, спасибо тебе большое. Действительно сухая выжимка информации без лишнего словоблудия. Как же такое можно отыскать...
Настолько всё понятно объяснил! НАКОНЕЦ-ТО поняла, где в схеме MVVM находится пользователь, а где бизнес-логика))) Спасибо!
Очень полезные и понятные уроки. Спасибо за Ваш труд
Очень полезное видео, как всегда, в общем :) Большое спасибо!
Большое спасибо и с прошедшим !) Видео очень помогло !)
Спасибо большое Сергей. Много слышал об этом, но не до конца всё понимал. Всё очень понятно и просто объяснено, как раз как и хотелось бы. Сразу стало понятнее. Теперь я увереннее могу отвечать на собеседовании что мне известно об этом.
Спасибо за короткое и предельно содержательное видео!
Очень круто! Спасибо
Спасибо вам большое, очень интересное подробное объяснение. Рада, что нашла ваш канал!
Благодарю за видео, всё доходчиво объяснил
Вот как раз и интересно обсуждать то, что не так очевидно
Спасибо, все очень понятно.
Спасибо, очень было интересно
Спасибо! Четкий видосик) Вы классный рассказчик!
Спасибо!
Великолепный контент!
Нигде не мог найти толкового объяснения паттернов. Везде сухие статьи и вода. Спасибо автору!
Ты очень круто обьясняешь архитектуру. Мне Java не интересна, но если будут еще подобные ролики, то подписка обеспечена
Моё почтение!
красаучег, четко пояснил) привет из Нюрнберга!
С днем рождения!!!
Спасибо за хоткей с методами, не знал его
Лучший видос по архитектурным паттернам. Еще бы ссылка на исходники, вообще б цены не было))
Самое понятное объяснение mvvm
лучшее видео про паттерны
учу swift и очень долго искал подобный видос на тему архитектур. Супер понятно - спасибо!
@ihateidiots9484
2 жыл бұрын
К архитектурам эти все mvc, mvp, mvvm не имеет никакого отношения
@drfclub777
Жыл бұрын
@@ihateidiots9484 а что имеет отношение?
С днём рождения! Всех благ)))
Спасибо, достаточно понятное видео. Хотя было бы неплохо выделять или подсвечивать те команды/переменные и пр. элементы кода, о которых в даный момент идёт речь.
спасибо, наглядно
С днем рождения! Всех бла тебе! Раскажи о поисковых системах google и т.д. своим понятным языком. Принципы их работы. Ну а если что то покажешь на практике вообще огонь будет. Еще раз с днем рождения гений! Желаю тебе денег и здоровья!
@MrChelovek68
2 жыл бұрын
Блин,я не автор канала,но кхм. Поисковые краулеры кхм,если судить по примеру из шилдта и с хабра, просто ходят по ссылкам,качают страницы и сайты,а дальше сохраняют в бд. Сам сайт гугла это просто сайт,так же как и яндекса и любого другого поисковика. Помнится на хабре была статья как раз о написании поисковика. Для одного хабра в общем ушло около 600 гигов хранилища. Та и смысл,чтобы сделать поисковик для интернетов,нужно сначала скачать интернеты. Как то так. Надеюсь, люди поправят.
Наконец-то я понял в чём отличие MVP от MVVM. Отличие в том, что при MVVM подписчиков(вьюх) может быть сколько угодно, и каждый раз когда от модели во ViewModel прилетает изменение, все подписанные вьюхи об этом уведомляются и изменяются. А при MVP каждый Презентор подписан на одну конкретную вьюху. Соответственно, если вьюх динамическое количество, то память засоряется кучей Презенторов на каждую вьюху. Если я правильно понял, получается MVVM лучше?
@ffjhfjidyfourho
8 ай бұрын
Чаво?! Непонятно нечаво! 😂
В-деревья рулят не только в бд)
Спасибо. Доходчиво объяснили суть и цель архитектурных паттернов, однако очень не хватило немного гайда. О том какова была компановка и иерархия каталогов и их файлов?! И какова структура стала после рефакторинга?! И немного подробней и наглядней пройтись по взаимодействию архитектурных разделений.
было бы хорошо увидеть примеры одного и того же элементарного приложения, написанного в трех разных стилях, потому что на словах не очень понятно
С днём рождения!
Гигант
Учу JavaScript, первое годное видео о MVC, MVP)
Спасибо большое за объяснения, наконец-то нашел что-то краткое и четкое. По MVVM закрыли вопрос по поводу того, является ли гугловский компонент ViewModel тем же, что и термин ViewModel из Model-View-ViewModel, а также по поводу того, что компонент ViewModel может быть замещен на что-то свое. В общем, посмотрел с удовольствием, пользой и большим интересом. Спасибо!
С днем рождения
nice-nice 50
Респект от iOS программиста
Спасибо за видео, много для себя почерпнул нового. Про MVP прошу уточнить: Presenter в приложении один или для каждого представления отдельный? Могу я допустим создать 1 Presenter, в котором будет сконцентрировано взаимодействие всех представлений и их связь с моделью (через коллбэки)? В этом случае модель и представления ничего не будут знать друг о друге, а общаться только через Presenter.
@arhitutorials
2 жыл бұрын
Для каждого представления свой презентер. Если смешать логику работы с разными представлениями в одном классе, очень тяжело будет с этим работать.
@mikhailshirokov8464
2 жыл бұрын
@@arhitutorials, тогда другой вопрос: кто будет выбирать нужный презентер в нужный момент? Кто будет создавать презентеры и хранить ссылки на них? В случае с Android - Activity?
@arhitutorials
2 жыл бұрын
@@mikhailshirokov8464 По разному бывает. В простейшем случае Activity. Но как тогда решить проблему пересоздания Activity при повороте экрана? Значит ссылку на презентер следует хранить где-то в другом месте. Создавать тоже можно по разному. Например, популярный вариант - внедрение зависимостей с помощью Dagger. Часто это все идет вместе с тестами. Если презентер не зависит от Андроид фреймворка, то его логику можно тестировать обычными юнит тестами. Отчасти ради этого весь этот MVP и затевается. Если для реализации паттерна MVVM есть общепринятые компоненты и гайдлайны от гугла, то MVP в этом смысле не стандартизирован. Сколько проектов с MVP столько и реализаций. Каждый делает в меру своего понимания.
OK
а какой набор паттернов на бэкенде?
Существует некоторая путаница в понятиях. У разработчиков серверной части (бэк-энд) клиент-серверных приложений под MVC подразумевается MVP (MVC = MVP). А у разработчиков десктоп и мобильных приложений MVC и MVP это разные понятия.
РефактОринг)
а почему в MVC стрелка от View к контроллеру, а не от юзера к контроллеру?
Здравствуйте. Если есть ссылка на репу с рассмотренными примерами добавьте, плз, в описание видео.
@arhitutorials
2 жыл бұрын
К сожалению большая часть примеров взята из реальных коммерческих приложений, исходники мне не принадлежат. Чтоб показать в ролике фрагменты исходников, специально запрашивал разрешение у компании - владельца.
А точно MVP, MVVM это именно архитектурный паттерн? Или может это презентационный?
@arhitutorials
2 жыл бұрын
Это как вам угодно. Я бы сказал, что так как паттерн затрагивает несколько слоев приложения, то архитектурный. В эти слои входит также и слой презентации, по этому к презентации это тоже отношение имеет. Под слоями я подразумеваю эти: raw.githubusercontent.com/android10/Sample-Data/master/Android-CleanArchitecture/clean_architecture.png
3:22 Outofmemory программиста
честно я пытался, но ушел в трейдинг )) но программист - это ГОЛОВА!!! И даже прошел почти курс по java...
@arhitutorials
3 жыл бұрын
Я бы может тоже ушел бы в трейдинг, если бы это приносило прибыль. Как-то писал искусственный интеллект для прогнозирования курсов валют. Скормил ему исторические данные данные за 10 лет и получил результат, что каких-то существенных закономерностей не обнаружено) Данные близки к случайным. С тех пор я такими вещами не занимаюсь, так как смысла нет.
@futureman8340
3 жыл бұрын
@@arhitutorials ну это подход программиста... Тут надо руками... Когда сам а не робот довольно прибыльно...
@NotAFaken
3 жыл бұрын
а я учу джаву) и трейдю))
@arhitutorials
3 жыл бұрын
@@NotAFaken Трейдинг - это рулетка. Сегодня выиграл, завтра проиграл... И только казино стабильно в плюсе)
@NotAFaken
3 жыл бұрын
@@arhitutorials именно поэтому и учу джаву)))))))
MVC был предложен 60 лет назад.
4:20 заканчивается объяснение для чего это нужно
апогей комьюнити андроид по архитектуре МВП... то ли чаю выпить, то ли повесится
@arhitutorials
2 жыл бұрын
А что вас удивляет? Андроид - это фрондэнд, и типовая архитектура соответствующая: github.com/android10/Android-CleanArchitecture
@uranproject
2 жыл бұрын
да я всего лишь по комьюнити и разбору архитектур плачу. Вы скидываете пример гугла, от этого еще больнее в сердце
Вы грамотно объяснили паттерны, но ваш код уж извините пахнет плохо. Первый пример который вы показали для MVC ничего общего с этой архитектурой не имеет, ваши контроллеры это тоже view которые вы просто разбили на кусочки и потом напихали в одну Активити. Этот паттерн реализуется совсем не так 😊
@arhitutorials
6 ай бұрын
Я считаю, что первичным является критерий принадлежности к определенному слою абстракции. Если объект содержит в себе логику презентации, то не важно как он устроен, по фэншую или нет, - это слой презентации. Слой презентации - это никак не может быть View, как не крути. Хорошо пахнет или плохо - это другой вопрос.
Сергей, привет. Ты в видео разрешил тебя покритиковать. Мне видео вообще не зашло. Я ожидал что ты будешь показывать не просто какие-то методы и переменные, покажешь вот класс - это вьюмодель, вот другой класс - модель, вот вьшка, взаимодействют они так и так. А у тебя просто какой то код на экране и куча текста идет не понятно про что
Так и не понятно, зачем же разбивать один большой Activity на кучу классов. Так шаришься в одном файле, а так еще все то же самое по разным файлам + обвязки добавилось.
@drfclub777
Жыл бұрын
у тебя каждая кнопка отвечает за свой функционал, и проще будет редачить такой функционал в отдельном файле, а уже саму кнопочку наблюдать в Activity к тому же, такой подход позволяет отцепить функционал одной кнопочки в целом от проекта и пристроить к другому проекту, чуть подредачив, а если все будет в одной Activity, то тогда каждый проект придется писать с нуля, а тут у тебя считай есть готовые отдельные элементы, которые можно юзать в других проектах с другой стороны, есть проблема с тем, когда одни события зависят от других, что также подметил автор видео еще когда у тебя тысяч 100 строк в классе, то шариться в файле становится кратно сложнее, а вероятность сломать проект от одного маленького действия достигает 100%
@FyUajYpUlM39
Ай бұрын
Проще открыть несколько вкладок и переключаться между ними одним нажатием кнопки и сразу видеть нужный фрагмент кода, чем скроллить туда-сюда и каждый раз вискивать глазами нужный кусок.
Для тех кто так и не осилил родной язык: pattern - шаблон. Не Pattern проектирования (уж опредились с языком из двух), а шаблон проектирования. Не возможно слушать. P/S/ Для так же плохо владеющих и английским, Live это лайв, а не лив. Программист который даже говорить не смог научиться? мда...Андроид и java в 21 году, мда...
@arhitutorials
2 жыл бұрын
"Шаблон" по английски - это template. А pattern означает "образец". Слово паттерн в русском языке есть и оно передает смысл английского оригинала лучше, чем слово шаблон. При чтении/написании кода нормально произносить слова в латинской транскрипции а не в английской. Потому что латинская транслитерация понятна всем, даже тем, кто не знает правил чтения английского языка. Java язык простой. Синтаксис элементарный, читается легко. Вы предлагаете новичков Котлином насиловать? Гуманнее надо быть.
@dekus80
2 жыл бұрын
@@arhitutorials Бывает что одно слово можно перевести на несколько, не в курсе? Открой хотя бы google translate, перевод английский - русский и напиши слово pattern. Слово паттерн есть только у таких, которые не осилили русский, что переводится это с английского как шаблон. У них и гайды и т.д.
@arhitutorials
2 жыл бұрын
@@dekus80 Вы дальше гугл транслейта языка не знаете? Слова имеют разный смысл. Например слова defence и protection - гугл транслейт переведет оба как защита. Хотя это два разных слова и смысл у них разный. Defence - соответствует русскому "оборона", а protection - да, защита кого-то от чего-то. Когда работаете с языками нужно вникать в реальный смысл слов, с которыми имеете дело, иначе так и будете глупости нести.
@MrChelovek68
2 жыл бұрын
Не срача для. Хотя я тот еще токсичный собеседник. Но паттерн реально переводится как шаблон. Это по сути то и есть шаблон. Мб неоднозначность связана со свойствами языков. Но опять же,паттерн -шаблон реализации того или иного действия🤔🤔 в остальном, та смысл цепляться к словам. Када суть интереснее и хорошо изложена,спасибо. Месяц назад я б душу дьяволу отдал за mvvm👌
@arhitutorials
2 жыл бұрын
@@MrChelovek68 Ну тут вообще товарищ доказывал, что паттерн - это иностранное слово, а шаблон - это русское. Хотя на самом деле шаблон - это такое же самое заимствование, только из французского. Короче мрак...
Спасибо!