log4lgb 2018-02-12 18:30 采纳率: 50%
浏览 1788
已采纳

Android 当中的 MVC 和 MVP 究竟是如何区分的?

最近在看架构方面的资料,对于 MVC 和 MVP 有些搞不明白。

MVC:
M 层就是用户自己编写的类,页面的逻辑都在这里实现(譬如访问数据库、访问网络、以及各种逻辑操作算法等等),可以总结归纳为 M 层的作用就是“这个页面的功能”
V 层就是各种控件,用来接受用户信息(譬如各种按钮、各种编辑框)和展示信息给用户(类如TextView ImageView 等)
C 层的概念我有些模糊,看一些博客上讲,它是沟通 M 和 V 的桥梁。我有些搞不懂。

我是这么理解的,我们需要在C 层当中创建 M 层的对象然后调用其相关方法:譬如访问网络方法、存储数据方法,而这些方法所用到的参数就通过V层来获取,同时如果M层有数据返回,那么V层可以直接操作这个返回的数据。

总感觉哪里不太对,请问大家,我这个理解有问题吗?

MVP:
在这个模式里,是将Activity或者Fragment作为V层,而将原本 MVC 当中 C 层的沟通逻辑放到了新定义的 P 层当中。

是这样吗?

----------大年二十八update--------------
我举个例子,譬如实现一个功能,用户输入一个id(数字),然后匹配数据库当中是否有这个id,如果有,就在页面上显示这个id对象的message,如果没有,就显示没有

在 MVC 当中
M 层自然有一个 String search(int id)方法,方法体就是通过id去执行查询
V 层就是获取用户输入的id,以及获取用户的点击查询输入,还有显示查询结果
C 层就是 Activity或者Fragment,我们在 Activity当中创建model对象并调用search方法,并且将V层输入的id作为参数传入。

所谓的M层和V层耦合,就是search方法返回的数据,可以直接调用 V 层的 text.settext(message )来将内容显示出来

我这么理解有问题吗?

  • 写回答

8条回答 默认 最新

  • 脱裤儿任风吹 2018-02-13 01:29
    关注

    mvc模式,是吧m和v层写在一起,通过c来处理逻辑关系,简单的页面还好,越大,逻辑越复杂,就会越乱,你可能经常会写出一个上千行的activity,过段时间再去自己都看不懂,mvp是吧m和v分离出来,不直接交互,通过p层实现数据传递显示,大量的m只管模型内容,v只负责显示,p层负责数据传递

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(7条)

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?