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