# MVVM **Repository Path**: 1011347848/MVVM ## Basic Information - **Project Name**: MVVM - **Description**: 使用Data Binding Library来实现MVVM模式 - **Primary Language**: Android - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 9 - **Forks**: 2 - **Created**: 2016-02-17 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: android-modules **Tags**: None ## README ## 什么是MVVM 我们一步步来,从MVC开始。 MVC 我们都知道,模型——视图——控制器。为了使得程序的各个部分分离降低耦合性,我们对代码的结构进行了划分。 ![MVC](http://git.oschina.net/uploads/images/2016/0219/195307_9752feb2_355075.png "MVC") 他们的通信方式也如上图所示,即View层触发操作通知到业务层完成逻辑处理,业务层完成业务逻辑之后通知Model层更新数据,数据更新完之后通知View层展现。在实际运用中人们发现View和Model之间的依赖还是太强,希望他们可以绝对独立的存在,慢慢的就演化出了MVP。 ![MVP](http://git.oschina.net/uploads/images/2016/0219/195348_cb38413b_355075.png "MVP") Presenter 替换掉了Controller,不仅仅处理逻辑部分。而且还控制着View的刷新,监听Model层的数据变化。这样隔离掉View和Model的关系后使得View层变的非常的薄,没有任何的逻辑部分又不用主动监听数据,被称之为“被动视图”。 ![MVVM](http://git.oschina.net/uploads/images/2016/0219/195408_9a955f75_355075.png "MVVM") 至于MVVM基本上和MVP一模一样,感觉只是名字替换了一下。他的关键技术就是今天的主题(Data Binding)。View的变化可以自动的反应在ViewModel,ViewModel的数据变化也会自动反应到View上。这样开发者就不用处理接收事件和View更新的工作,框架已经帮你做好了。