Android-UI层的三种框架模式-MVC、MVP、MVVM
2016-03-15 17:21
591 查看
Android-UI层的三种框架模式-MVC、MVP、MVVM
一 MVC框架:
(1)基本定义:MVC框架全名是指Model,View,Controller,是模型(Model)---视图(View)---控制器(Controller),是一种业务逻辑,数据,界面显示分离的方法组织代码,将业务逻辑聚焦到一个部件里面,在改进和个性化定制界面以及与用户交互的同时,不需要重新写业务逻辑。(2)框架与设计模式的区别:框架通常是指代码重用,而设计模式是设计重用,架构是介于两者之间,部分代码重用,部分设计重用,有时分析也重用。设计模式是比框架更小的元素,一个框架中通常含有一个或者多个设计模式。设计模式是对在某种环境中反复出现的问题以及解决问题的方案的描述。常用的UI框架有MVC,MVT,MVVM。
(3)核心:应用解决用户的问题总是围绕四个核心来进行,分别是界面(View),事件(Action),业务(business ),数据(data)。
(4)图形展示:
MVC的一般流程是这样的:View(界面)触发事件-->Controller(业务)处理了业务--
>Model(模型)然后触发了数据处理-->结果返回到Controller-- >Controller(带着数据)回到了View-->View更新j界面。
(5)MVC的另外表现方式:直接通过controller接受指令。
二 MVP框架:
(1)基本定义:MVP框架是由MVC衍生而来的,分别代表Model-View-Presenter;区别是:MVP 模式将 Controller 改名为 Presenter,同时改变了通信方向。(2)两种MVP图形示例:
两幅图是不同的,但是对MVC的改进的思想却是一样的:切断的View和Model的联系,让View只和Presenter(原Controller)交互,减少在需求变化中需要维护的对象的数量。
三
MVVM模式:
(1)基本定义:Model-View-ViewModel(MVVM)。第一种表现形式:
第二种表现形式:
(2)与MVP 、MVC框架之间的区别:
MVVM 模式将 Presenter 改名为 ViewModel,基本上与 MVP 模式完全一致。ViewModel大致上就是MVP的Presenter和MVC的Controller了,而View和ViewModel间没有了MVP的界面接口,而是直接交互,用数据“绑定”的形式让数据更新的事件不需要开发人员手动去编写特殊用例,而是自动地双向同步。数据绑定你可以认为是Observer模式或者是Publish/Subscribe模式,原理都是为了用一种统一的集中的方式实现频繁需要被实现的数据更新问题。
比起MVP,MVVM不仅简化了业务与界面的依赖关系,还优化了数据频繁更新的解决方案,甚至可以说提供了一种有效的解决模式。
参考文章致谢:
1 http://www.ruanyifeng.com/blog/2015/02/mvcmvp_mvvm.html 2 http://www.zhihu.com/question/20148405
相关文章推荐
- Ultra-QuickSort
- iOS UIView 一些属性方法总结
- Get value from agent failed: cannot connect to [[192.168.1.110]:10050]: [113] No route to host
- 解决The current branch is not configured for pull No value for key branch.master.
- Android stuido中更改图片编辑软件
- 'dependencyManagement.dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique:
- 使用Arduino读取水位传感器数据
- UITextView:定制选中文字的菜单和用代码选择文字
- Assertion failure in -[UITableView _configureCellForDisplay:forIndexPath:]
- 重装win7+uefi+gpt
- String、StringBuffer和StringBuilder的区别
- uitextfield
- EasyUI DataGrid动态加载数据
- iOS UIView动画实践(五):Keyframe Animation
- iOS UIView动画实践(四):过渡与伪3D动画
- UIPickerView控件中自定义显示的字体大小及样式
- UI进阶——数据请求
- iOS UIView动画实践(三):Transition Animation
- iOS UIView动画实践(一)揭开Animation的神秘面纱
- poj2299Ultra-QuickSort【线段树求逆序数】离散化