MVC的起源和历史
我们很多人都会在网址上看到各种mvc或者mvp相关文章,有的写的很详细、有的写的则很绕口,这里我自己也分享一份自己的心得!
一、MVC起源
MVC:全称:Model - View - Controller,它是于1970年的时候有TrygveReenskaug在Smalltalk-80系统上首次提出。起初并不是MVC,而是MVCE,也就是Model - View - Controller后面多了一个Editor。但是当时提出MVC的理念和现在的理念大致是一样的。都是为了讲数据模型和视图层分离开来。
其实MVC是一种框架模式,而非设计模式,GOF把MVC看做是3中设计模式:《观察者模式》、《策略模式》,《组合模式》三者的合体。其核心是《观察者模式》。
二、框架模式和设计模式两者的区分?
1、我们很多时候都会把所以的模式都称呼为设计模式,其实这样的称呼是错误的。比如注解模式、通讯框架、数据储存框架等通用性很强的框架,还有一些面向后端开发的,如Struts、Spring等框架,在这些框架中我们会见到很多设计模式的应用。对于框架而言,就是对代码的重用,对于设计而言,则是会设计的重用。
对于框架而言,我们可以理解为框架面向一系列相同行为的代码的重用!
对于设计而言,我们可以理解为面向一系列相同结构代码的重用
2、在软件开发领域中3中级别的重用
内部重用:一个应用中能公共使用的抽象类
代码重用:将通用模块组合成一个库或者工具集,以方便多个应用和领域都能使用
应用框架的重用:为专用领域提供的或者现成的基础结构,以获得最高级别的重要性。
三、MVC的优缺点
优点:其实mvc的优点很多,第一个就是理解起来很简单,技术含量不高,这样开发和维护成本比较低,方便与后期维护和修改,其次就是耦合度不高,表现层和业务层是分开的,对开发来说很有利,前端开发注重界面的研发,后端开发注重业务逻辑的梳理。
缺点:它没有明确的定义,所以理解起来MVC模式比较复杂,使用起来也需要精心设计。开发一个MVC模式架构的工程,将不得不花费相当客观的时间去考虑如何将MVC运用到项目中。由于Model和View要严格分离,这样给调试应用程序带来一定的困难。另外,由于MVC模式将一个应用分成三个部件,所以,这意味着同一个工程将包含比以前更多的的文件。对于小项目而言,MVC反而是一种拖累。在实际开发中要妥善使用。
四、MVC在Android中的实现
- 1、Android中对MVC的应用很经典,因为对android本身来说,其xml界面部分就涉及了模型 - 试图 - 控制器3者的交互。在Android中,视图层View采用xml文件形式对几面进行显示和描述。例如:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="50dp"
android:id="@+id/list_item_text"
android:textSize="16sp"
android:gravity="left|center_vertical"
android:padding="10dp" />
- 2、对于模型Model部分则大多应用于本地的数据未见或者网络获取的数据体,很多情况我们对这些数据的处理也会在这一层中进行。最后的控制器Controller部分则当之无愧由Activity来承担。(下面代码就是我们的Model层MainActivity,但是我们要继承Activity。其Activity就相当于我们View和MainActivity的控制器)
五、MVC总结
- 在Android UI系统中,控制器Activity主要起到作用就是解耦,将试图View和模型Model进行分离,两者在Activity中进行绑定或完成其他逻辑。总体来说MVC比较适合较大的项目。其实我们平时开发中,特别是Android,我们并不常用MVC模式去脱离Android UI系统构建自己的框架结构