MVC框架模式

MVC(模型-视图-控制器),是一种框架模式而非设计模式,主要是为了实现解耦,将数据层跟视图分离开,并以控制器作为连接两者的桥梁。

框架模式跟设计模式的区别:

  • 我们经常听到这样那样的框架,比如通信框架,注解框架,数据库框架,还有一些面向后端的框架,如Struts,Spring等框架,这些框架里面会应用很多的设计模式。

  • 对于框架来说通常是代码的重用,而对于设计来说通常是对于设计的重用。
    可因这样简单的理解,框架是面向一系列相同行为代码的重用,而设计则是面向一系列相同结构代码的重用,我们平时所说的架构介于框架跟设计之间。

  • 框架是大智慧,用来对软件设计进行分工;设计模式是小技巧,对具体问题提出解决方案,以提高代码重用率,降低耦合度。

MVC优点:

  • 理解起来比较容易,技术含量不高,对于开发跟维护来说,成本较低也易于维护跟修改。

  • 耦合性不高,表现层跟业务层相分离实现各司其职,对开发来说也很有利,前端工程师专注于界面的开发,后端工程师则致力于业务逻辑的完善等。

缺点:

  • 没有明确的定义,完全理解MVC模式不是很容易。
  • 使用MVC模式需要精心设计,由于内部原理比较复杂,所以需要花费一些时间去思考。开发一个MVC模式架构的工程,将不得不花费相当多的时间去考虑如何将MVC模式应用到应用程序中。
  • MVC模式要求Model跟View严格分离,这样给程序的调试带来了一定的困难,每个构件在使用前都要经过严格的测试。
  • MVC设计模式将一个应用程序分成三部分,所以这意味着同一个工程将包含比以前更多的文件,因此,对于一些小规模的项目,MVC反而会带来更多的工作量及复杂性。

MVC在Android中的实现:

Android中对MVC的应用很经典,因为对Android本身来说,对界面部分的开发,就涉及了模型-视图-控制器三者的交互。

  • 在Android中视图View层一般采用XML文件进行界面描述。
  • 模式Model部分则大多对应于本地的数据库文件或网络获取的数据体,很多情况下我们对于数据的处理,也会在这一层进行。
  • 最后的控制器则是当之无愧的由Activity承担。

一般情况下会在Activity中获取数据以及界面元素,并将两者进行绑定,但其逻辑不能过于复杂,因为Android中规定一个Activity的响应时间是5S,如何超过这个时间就会出现ANR异常。

总结:

在Android的UI系统中,控制器Activity主要起到的作用是解耦,将试图View跟模型Model相分离,两者在Activity中进行绑定或完成其他的逻辑。总体来说,MVC更适合规模较大的项目,比如Android中的UI系统框架,虽然我们在上面的分析中切实能感受到Android在MVC方面的结构,但是,这个框架并不是我们自己实现的,而是由framework给我们搭建好,并提供给我们的,在平时的开发中,特别是Android开发中,我们并不常用到MVC模式去脱离Android UI系统构建自己的框架。

参考资料:
《Android源码设计模式解析与实战》
Android MVP模式 简单易懂的介绍方式
框架模式 MVC 在Android中的使用

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器