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