Android中架构模式——MVC

参考:https://blog.csdn.net/chaoshenzhaoxichao/article/details/79871145
Android当中的MVC

M:数据库层,数据模型层,网络请求管理,数据存储类的东西,都可以属于M层,简单点理解就是数据层,或者叫基础层。

V:这一层在Android当中其实是XML,也就是RES资源文件下的LAYOUT们。可不是ACTIVITY。

C:这一层在Android当中才是ACTIVITY,控制层,用于控制界面与数据进行交互的。

例子:
比如你的界面有一个按钮,按下这个按钮去网络上下载一个文件,这个按钮是view层的,是使用xml来写的,而那些和网络连接相关的代码写在其他类里,比如你可以写一个专门的networkHelper类,这个就是model层,那怎么连接这两层呢?是通过 button.setOnClickListener()这个函数,这个函数就写在了activity中,对应于controller层。是不是很清晰。在这里插入图片描述

当用户发触事件的时候,view层会发送指令到controller层,接着controller去通知model层更新数据,model层更新完数据以后直接显示在view层上,这就是MVC的工作原理。

存在的问题:

  • 问题就在于xml作为view层,控制能力实在太弱了,你想去动态的改变一个页面的背景,或者动态的隐藏/显示一个按钮,这些都没办法在xml中做,只能把代码写在activity中,造成了activity既是controller层,又是view层的这样一个窘境。大家回想一下自己写的代码,如果是一个逻辑很复杂的页面,activity或者fragment是不是动辄上千行呢?这样不仅写起来麻烦,维护起来更是噩梦。
  • view层和model层是相互可知的,这意味着两层之间存在耦合,耦合对于一个大型程序来说是非常致命的,因为这表示开发,测试,维护都需要花大量的精力。
    正因为MVC存在上述的问题,所以引入后面要介绍的两个框架-MVP和MVVM。

进阶

https://blog.csdn.net/qq_32534441/article/details/103617062

发布了274 篇原创文章 · 获赞 170 · 访问量 22万+

猜你喜欢

转载自blog.csdn.net/qq_32534441/article/details/105129564