<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" >

  <channel>
    <title><![CDATA[Статьи]]></title>
    <link>https://habr.com/ru/users/dmdev/publications/articles/</link>
    <description><![CDATA[Хабр: статьи пользователя dmdev]]></description>
    <language>ru</language>
    <managingEditor>editor@habr.com</managingEditor>
    <generator>habr.com</generator>
    <pubDate>Sat, 02 May 2026 02:05:21 GMT</pubDate>
    
    
      <image>
        <link>https://habr.com/ru/</link>
        <url>https://habrastorage.org/webt/ym/el/wk/ymelwk3zy1gawz4nkejl_-ammtc.png</url>
        <title>Хабр</title>
      </image>
    

    
      
        
    
    <item>
      <title><![CDATA[Свойства против методов]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/541308/</guid>
      <link>https://habr.com/ru/articles/541308/?utm_campaign=541308&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p><img src="https://habrastorage.org/webt/ew/en/yw/ewenywcjb9-od0wjne4qb_0x6uk.jpeg"></p><br>
<p>На первый взгляд, такой вопрос как выбор свойства или метода кажется простым. Но это до тех пор, пока вы не столкнётесь с непониманием в своей команде. Хотя есть устоявшиеся практики, их формулировки достаточно расплывчаты. В такого рода вопросах есть некоторая степень свободы, которая затрудняет наш выбор, а кажущаяся простота даёт плодородную почву для споров.</p> <a href="https://habr.com/ru/articles/541308/?utm_campaign=541308&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Mon, 08 Feb 2021 09:14:07 GMT</pubDate>
      <dc:creator><![CDATA[dmdev]]></dc:creator>
      <category><![CDATA[Java]]></category><category><![CDATA[Kotlin]]></category><category><![CDATA[Программирование]]></category><category><![CDATA[Проектирование и рефакторинг]]></category><category><![CDATA[Качество кода]]></category>
      <category><![CDATA[Properties vs Functions]]></category><category><![CDATA[Kotlin]]></category><category><![CDATA[Java]]></category><category><![CDATA[val]]></category><category><![CDATA[fun]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Свежий взгляд на отображение диалогов в Android]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/mobileup/articles/440284/</guid>
      <link>https://habr.com/ru/companies/mobileup/articles/440284/?utm_campaign=440284&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p><a href="https://habr.com/ru/company/mobileup/blog/440284/"><img src="https://habrastorage.org/webt/cu/u9/xl/cuu9xl-sjrrfz5v4pqqh9hocnxo.png"></a></p><br>
<p>На картинке первая мысль читателя, который недоумевает, что можно написать про такую простую задачу как отображения диалога. Аналогично думает и менеджер: «Тут ничего сложного, наш <a href="https://habr.com/ru/users/Jeevuz/">Вася</a> за 5 минут сделает». Я, конечно, утрирую, но на самом деле всё не так просто, как кажется на первый взгляд. Особенно если мы говорим про Android.</p><br>
<p>Итак, на дворе шёл 2019 год, а <strong>мы всё ещё не умеем нормально показывать диалоги</strong>.</p> <a href="https://habr.com/ru/articles/440284/?utm_campaign=440284&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше →</a>]]></description>
      
      <pubDate>Fri, 15 Feb 2019 14:05:43 GMT</pubDate>
      <dc:creator><![CDATA[dmdev (MobileUp)]]></dc:creator>
      <category><![CDATA[Блог компании MobileUp]]></category><category><![CDATA[Разработка мобильных приложений]]></category><category><![CDATA[Android]]></category>
      <category><![CDATA[android]]></category><category><![CDATA[leaked window]]></category><category><![CDATA[dialog]]></category><category><![CDATA[alert]]></category><category><![CDATA[RxPM]]></category><category><![CDATA[реактивные диалоги]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[RxPM — реактивная реализация паттерна Presentation Model]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/mobileup/articles/342850/</guid>
      <link>https://habr.com/ru/companies/mobileup/articles/342850/?utm_campaign=342850&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/webt/bs/sp/du/bsspduk6c_cyqko1jsbxefafbzg.png"><br>
<p>Через полгода после выхода прошлой <a href="https://habrahabr.ru/company/mobileup/blog/326962/" rel="nofollow noopener noreferrer">статьи</a> о сравнении RxPM c другими презентационными паттернами мы с <a href="https://habr.com/ru/users/jeevuz/" class="user_link">Jeevuz</a>, наконец, готовы представить библиотеку <strong>RxPM</strong> — реактивную реализацию паттерна <a href="https://martinfowler.com/eaaDev/PresentationModel.html" rel="nofollow noopener noreferrer">Presentation Model</a>. Давайте сделаем небольшой обзор основных компонентов библиотеки и покажем, как их использовать.</p> <a href="https://habr.com/ru/articles/342850/?utm_campaign=342850&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Wed, 22 Nov 2017 10:45:53 GMT</pubDate>
      <dc:creator><![CDATA[dmdev (MobileUp)]]></dc:creator>
      <category><![CDATA[Блог компании MobileUp]]></category><category><![CDATA[Проектирование и рефакторинг]]></category><category><![CDATA[Разработка мобильных приложений]]></category><category><![CDATA[Android]]></category>
      <category><![CDATA[RxPM]]></category><category><![CDATA[Presentation Model]]></category><category><![CDATA[реактивное программирование]]></category><category><![CDATA[android]]></category><category><![CDATA[architecture]]></category><category><![CDATA[mvvm]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Реактивные приложения с паттерном RxPM. Прощайте​ MVP и MVVM]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/mobileup/articles/326962/</guid>
      <link>https://habr.com/ru/companies/mobileup/articles/326962/?utm_campaign=326962&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Уже продолжительное время я размышляю над паттерном RxPM и даже успешно применяю его в «продакшене». Я планировал сначала выступить с этой темой на <a href="https://mobiusconf.com">Mobius</a>, но программный комитет отказал, поэтому публикую статью сейчас, чтобы поделиться с Android-сообществом своим видением нового паттерна. </p><br>
<p>Все знакомы с MVP и MVVM, но мало кто знает, что MVVM является логическим развитием паттерна <a href="https://www.martinfowler.com/eaaDev/PresentationModel.html">Presentation Model</a>. Ведь единственное отличие MVVM от PM – это автоматическое связывание данных (<em>databinding</em>). </p><br>
<p>В этой статье речь пойдет о паттерне Presentation Model с реактивной реализацией биндинга. Некоторые ошибочно называют его RxMVVM, но корректно будет называть его RxPM, потому что это модификация шаблона Presentation Model.</p><br>
<p>Этот паттерн удобно использовать в проектах с <a href="http://reactivex.io">Rx</a>, так как он позволяет сделать приложение по-настоящему реактивным. Кроме того, он не имеет многих проблем других паттернов. На диаграмме ниже представлены различные варианты и классификации шаблонов представления:</p><br>
<p><img src="https://habrastorage.org/files/1f2/2c1/6bd/1f22c16bd5ab47f5b317d1cae555a170.jpg"> </p><br> <a href="https://habr.com/ru/articles/326962/?utm_campaign=326962&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше →</a>]]></description>
      
      <pubDate>Thu, 20 Apr 2017 13:06:26 GMT</pubDate>
      <dc:creator><![CDATA[dmdev (MobileUp)]]></dc:creator>
      <category><![CDATA[Блог компании MobileUp]]></category><category><![CDATA[Проектирование и рефакторинг]]></category><category><![CDATA[Разработка мобильных приложений]]></category><category><![CDATA[Android]]></category>
      <category><![CDATA[MVP]]></category><category><![CDATA[MVVM]]></category><category><![CDATA[Presentation Model]]></category><category><![CDATA[RxPM]]></category><category><![CDATA[Rx]]></category><category><![CDATA[RxJava]]></category><category><![CDATA[android development]]></category><category><![CDATA[реактивное программирование]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Различия между MVVM и остальными MV*-паттернами]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/mobileup/articles/313538/</guid>
      <link>https://habr.com/ru/companies/mobileup/articles/313538/?utm_campaign=313538&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p><img src="https://habrastorage.org/files/e32/84d/b85/e3284db85c3d43559ee22e2299dab71a.jpg"/></p><br/>
<blockquote><em>От переводчика</em>:<br/>
<em>Уже опубликовано много материалов по MVC и его производным паттернам, но каждый понимает их по-своему. На этой почве возникают разногласия и холивары. Даже опытные разработчики спорят о том, в чем отличие между MVP, MVVM и Presentation Model и что должен делать тот или иной компонент в каждом паттерне. Ситуация усугубляется еще и тем, что многие не знают истинную роль контроллера в классическом варианте MVC. Предлагаю вашему вниманию перевод <a href="https://blogs.msdn.microsoft.com/erwinvandervalk/2009/08/14/the-difference-between-model-view-viewmodel-and-other-separated-presentation-patterns/">хорошей обзорной статьи</a>, которая многое проясняет и расставляет всё по своим местам</em>.</blockquote> <a href="https://habr.com/ru/articles/313538/?utm_campaign=313538&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Разобраться в MV-паттернах</a>]]></description>
      
      <pubDate>Tue, 25 Oct 2016 10:55:01 GMT</pubDate>
      <dc:creator><![CDATA[dmdev (MobileUp)]]></dc:creator>
      <category><![CDATA[Блог компании MobileUp]]></category><category><![CDATA[Программирование]]></category><category><![CDATA[Проектирование и рефакторинг]]></category>
      <category>MVC</category><category>MVP</category><category>MVVM</category><category>Presentation Model</category><category>Passive View</category><category>Supervising Controller</category>
    </item>
  

  

      

      

      

    
  </channel>
</rss>
