Android中的MVC和MVP模式的简单理解

来源:互联网 发布:maven 3.0.5 mac 编辑:程序博客网 时间:2024/05/15 08:13
      MVC模式:简单的说就是通过Controller的控制去操作Model层数据,并且返回给View展示.
MVC, 即Model-View-Controller;
Model: 数据层,负责处理业务逻辑,监听网络与数据库接口.
View   : 界面(UI层,xml布局或者其他继承View类的视图),显示来源于Model的数据.
Controller: 控制器(Activity和Fragment),传递用户交互和更新数据.(包括:键盘敲击、屏幕触摸、电话呼入等。)
        MVC典型例子的实现ListView/GridView/RecyclerView等.
        Android中最典型MVC是ListView,要显示的数据是Model,界面中的ListView是View,控制数据怎样在ListView中显示是Controller。
优点: 1. 数据层和视图层分离,这样视图层修改而不用重新编译模型和控制器代码..
          2. 重用性高---多个视图能共享一个model
 缺点: 1.Controller层会既是控制层又是view层,因为在xml中无法动态的去修改view,只能在Controller中去修改,这就造成了Actviity既是控制层又是view层.
           2. View层和Model层是相互可知的,两者之间存在耦合.
MVC工作原理:当用户触发事件的时候,view层会发送指令到controller层,接着controller去通知model层更新数据,model层更新完数据以后直接显示在view层上,这就是MVC的工作原理.

       MVP(是MVC模式的演化版,这里Activity和Fragment不再是Controller而仅仅是作为View层,所有用户事件的转发都在Presenter层处理.)
MVP 模式所做的事情很简单,就是将业务逻辑和视图逻辑抽象到接口中。
从图中看出,最明显的差别就是view层和model层不在互相可知,完全的解耦,presenter层充当了中介者,view层发出的事件传递到presenter层,presenter层去操作model层,并且将数据返回给view层,整个过程中view和model层没有任何关联,
优点: 1. 降低耦合度,实现了Model和View真正的完全分离,可以修改View而不影响Modle
         2. 模块职责划分明显,层次清晰
缺点: 逻辑复杂的页面,可能会有很多接口,维护接口的成本会很大.

http://download.csdn.net/download/xvzhengyang/10137891代码链接,登陆的小demo