<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Pattern on phantuanvi.com</title>
    <link>https://phantuanvi.com/vi/tags/pattern/</link>
    <description>Recent content in Pattern on phantuanvi.com</description>
    <generator>Hugo</generator>
    <language>vi</language>
    <lastBuildDate>Fri, 10 Mar 2017 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://phantuanvi.com/vi/tags/pattern/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Sử dụng Coordinator để điều khiển App Flow trong mô hình MVVM-C</title>
      <link>https://phantuanvi.com/vi/posts/0011dieukhienluongungdungvoi-coordinators/</link>
      <pubDate>Fri, 10 Mar 2017 00:00:00 +0000</pubDate>
      <guid>https://phantuanvi.com/vi/posts/0011dieukhienluongungdungvoi-coordinators/</guid>
      <description>&lt;div class=&#34;alert alert-info&#34;&gt;&lt;span class=&#34;alert-icon&#34;&gt;ℹ️&lt;/span&gt;&lt;div class=&#34;alert-content&#34;&gt;
    Bài này được mình dịch &lt;a href=&#34;https://essays.decode.agency/coordinators-440f6ebe693d#.4brd0i682&#34;&gt;từ đây&lt;/a&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;style&gt;
.alert {
  padding: 1rem;
  margin: 1rem 0;
  border-radius: 0.5rem;
  border-left: 4px solid;
}

.alert-info {
  background-color: #e7f3ff;
  border-color: #2196F3;
  color: #0d47a1;
}

.alert-success {
  background-color: #e8f5e9;
  border-color: #4CAF50;
  color: #1b5e20;
}

.alert-warning {
  background-color: #fff3e0;
  border-color: #FF9800;
  color: #e65100;
}

.alert-danger {
  background-color: #ffebee;
  border-color: #f44336;
  color: #b71c1c;
}

.alert-content {
  display: inline-block;
}

.alert-content p:last-child {
  margin-bottom: 0;
}
&lt;/style&gt;

&lt;p&gt;Ở bài trước, chúng ta đã biết sự phức tạp và rắc rối của &lt;em&gt;controller&lt;/em&gt;, điều này giải thích vì sao &lt;strong&gt;MVC&lt;/strong&gt; lại có nickname &amp;ldquo;&lt;em&gt;Massive ViewController&lt;/em&gt;&amp;rdquo;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Kiến trúc MVVM: hướng dẫn Step-by-Step</title>
      <link>https://phantuanvi.com/vi/posts/0010mo-hinh-kien-truc-mvvm-huongdantungbuoc/</link>
      <pubDate>Mon, 06 Mar 2017 00:00:00 +0000</pubDate>
      <guid>https://phantuanvi.com/vi/posts/0010mo-hinh-kien-truc-mvvm-huongdantungbuoc/</guid>
      <description>&lt;div class=&#34;alert alert-info&#34;&gt;&lt;span class=&#34;alert-icon&#34;&gt;ℹ️&lt;/span&gt;&lt;div class=&#34;alert-content&#34;&gt;
    Bài này được mình dịch &lt;a href=&#34;https://essays.decode.agency/mvvm-architecture-29373314938d#.d6rr2uqsw&#34;&gt;từ đây&lt;/a&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;style&gt;
.alert {
  padding: 1rem;
  margin: 1rem 0;
  border-radius: 0.5rem;
  border-left: 4px solid;
}

.alert-info {
  background-color: #e7f3ff;
  border-color: #2196F3;
  color: #0d47a1;
}

.alert-success {
  background-color: #e8f5e9;
  border-color: #4CAF50;
  color: #1b5e20;
}

.alert-warning {
  background-color: #fff3e0;
  border-color: #FF9800;
  color: #e65100;
}

.alert-danger {
  background-color: #ffebee;
  border-color: #f44336;
  color: #b71c1c;
}

.alert-content {
  display: inline-block;
}

.alert-content p:last-child {
  margin-bottom: 0;
}
&lt;/style&gt;

&lt;p&gt;Việc lựa chọn đúng cho mô hình kiến trúc của app là một nhiệm vụ quan trọng.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mô hình kiến trúc iOS (phần 2)</title>
      <link>https://phantuanvi.com/vi/posts/0008ios-architecture-patterns-phan-2/</link>
      <pubDate>Mon, 27 Feb 2017 00:00:00 +0000</pubDate>
      <guid>https://phantuanvi.com/vi/posts/0008ios-architecture-patterns-phan-2/</guid>
      <description>&lt;div class=&#34;alert alert-info&#34;&gt;&lt;span class=&#34;alert-icon&#34;&gt;ℹ️&lt;/span&gt;&lt;div class=&#34;alert-content&#34;&gt;
    &lt;p&gt;Bài này được mình dịch &lt;a href=&#34;https://medium.com/ios-os-x-development/ios-architecture-patterns-ecba4c38de52#.xo42oskm2&#34;&gt;từ đây&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Bài dịch &lt;a href=&#34;https://phantuanvi.com/2017/02/m%C3%B4-h%C3%ACnh-ki%E1%BA%BFn-tr%C3%BAc-ios-ph%E1%BA%A7n-1/&#34;&gt;phần 1&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

  &lt;/div&gt;
&lt;/div&gt;

&lt;style&gt;
.alert {
  padding: 1rem;
  margin: 1rem 0;
  border-radius: 0.5rem;
  border-left: 4px solid;
}

.alert-info {
  background-color: #e7f3ff;
  border-color: #2196F3;
  color: #0d47a1;
}

.alert-success {
  background-color: #e8f5e9;
  border-color: #4CAF50;
  color: #1b5e20;
}

.alert-warning {
  background-color: #fff3e0;
  border-color: #FF9800;
  color: #e65100;
}

.alert-danger {
  background-color: #ffebee;
  border-color: #f44336;
  color: #b71c1c;
}

.alert-content {
  display: inline-block;
}

.alert-content p:last-child {
  margin-bottom: 0;
}
&lt;/style&gt;

&lt;h2 id=&#34;mvvm&#34;&gt;MVVM&lt;/h2&gt;
&lt;h3 id=&#34;mới-nhất-và-tuyệt-vời-nhất-trong-mô-hình-mvx&#34;&gt;Mới nhất và tuyệt vời nhất trong mô hình MV(X)&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;MVVM&lt;/strong&gt; là mới nhất trong kiểu &lt;strong&gt;MV(X)&lt;/strong&gt;, hãy hy vọng nó sẽ giải quyết được các vấn đề mà &lt;strong&gt;MV(X)&lt;/strong&gt; đối mặt trước đây.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mô hình kiến trúc iOS (phần 1)</title>
      <link>https://phantuanvi.com/vi/posts/0007ios-architecture-patterns-phan-1/</link>
      <pubDate>Fri, 24 Feb 2017 00:00:00 +0000</pubDate>
      <guid>https://phantuanvi.com/vi/posts/0007ios-architecture-patterns-phan-1/</guid>
      <description>&lt;div class=&#34;alert alert-info&#34;&gt;&lt;span class=&#34;alert-icon&#34;&gt;ℹ️&lt;/span&gt;&lt;div class=&#34;alert-content&#34;&gt;
    &lt;p&gt;Bài này được mình dịch &lt;a href=&#34;https://medium.com/ios-os-x-development/ios-architecture-patterns-ecba4c38de52#.xo42oskm2&#34;&gt;từ đây&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Bài dịch &lt;a href=&#34;https://phantuanvi.com/2017/02/m%C3%B4-h%C3%ACnh-ki%E1%BA%BFn-tr%C3%BAc-ios-ph%E1%BA%A7n-2/&#34;&gt;phần 2&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

  &lt;/div&gt;
&lt;/div&gt;

&lt;style&gt;
.alert {
  padding: 1rem;
  margin: 1rem 0;
  border-radius: 0.5rem;
  border-left: 4px solid;
}

.alert-info {
  background-color: #e7f3ff;
  border-color: #2196F3;
  color: #0d47a1;
}

.alert-success {
  background-color: #e8f5e9;
  border-color: #4CAF50;
  color: #1b5e20;
}

.alert-warning {
  background-color: #fff3e0;
  border-color: #FF9800;
  color: #e65100;
}

.alert-danger {
  background-color: #ffebee;
  border-color: #f44336;
  color: #b71c1c;
}

.alert-content {
  display: inline-block;
}

.alert-content p:last-child {
  margin-bottom: 0;
}
&lt;/style&gt;

&lt;p&gt;Bạn có cảm thấy lạ khi thực hiện &lt;strong&gt;MVC&lt;/strong&gt; trong &lt;strong&gt;iOS&lt;/strong&gt;? Bạn có những nghi ngờ về việc chuyển sang &lt;strong&gt;MVVM&lt;/strong&gt;? Bạn có nghe nói về &lt;strong&gt;VIPER&lt;/strong&gt;, nhưng không chắc rằng nó có xứng đáng không?&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
