关闭

浅析IOS中的MVC

标签: IOS中的MVC
526人阅读 评论(1) 收藏 举报

                                                                          浅析IOS中的MVC

       在IOS操作系统越来越流行的现今,越来越多的用户使用IOS操作系统,同时也有越来越多的人学习IOS操作系统,但是很多人并不明白在IOS中MVC是什么?接下来,我们将详细的介绍了到底什么才是MVC。

1、什么是MVC?

越来越多的开发者们专注于ios的开发,他们开发的相当一大部分应用软件都给人以美的享受,究竟是什么使得ios上的应用可以如此漂亮?因为他们使用了将代码和界面分开的开发结构框架MVC

MVC即是Model-VIew-Controller三个英文单词的缩写,中文翻译为模型视图控制器MVC并非只有ios应用软件独有的应用开发模式,它被广泛应用在许多软件(尤其是中大型软件)的开发上。MVC把软件系统分为三个部分:ModelViewControllerModel相当于应用的底层,应用在功能上的实现完全依赖于Model,打个比方,如果是一台电脑的话,Model就是你机箱里的所有东西:cpu,内存,硬盘,显卡等的一个集合,你不必看到它们,但它们必不可少;Controller就是控制器,它控制ModelView的交互,它将MV捆绑在一起,将你的操作传达给Model,再控制View将其表现出来。View相当于电脑的图形界面,将Model的运行结果可视化地呈现给用户,你在屏幕上看到的一切都可以归类于View

cocoa中,你的程序中的每一个object(对象)都将明显地仅属于这三部分中的一个,而完全不属于另外两个。因此,用MVC开发的应用软件更易于进行维护和修改,不用因为底层的Model出了问题而去影响表层的ViewMVC虽然把三部分独立了出来,但三部分之间仍然存在联系,但就如下图所示,ModelView之间是完全独立的,两者各自运行,以Controller为桥梁进行交互,并不发生直接关联。接下来我们用下面这张图来简单讲解一下MVC之间是如何进行交互的。

2、MVC交流方式:

如上文所讲,MV之间是双黄线,在交通法规方面我们都知道,双黄线是完全禁止超车的,MV也是,两者不存在任何直接交互。存在直接交互的只有MC之间与CV之间。首先我们来看MC的交互,如图所示,有一条绿色的箭头从C发起指向了M,代表了CM之间的交互应该首先从Controller发起,C首先向M提出自己的需求,再由M作出响应。C具有导入M头文件的API,因此C可以知晓M的一切内容,如同图中的那一条白色的虚线。再来看看相对复杂的CV之间的交互,这次我们仍然从绿色的箭头开始了解,箭头仍然由C发起,可见CV之间的交互依旧由Controller发起,但箭头起始端写了outlet一个词,意思是“输出口”,outlet可以看作是从C指向V的指针,它在C中被定义。outlet给我们提供了很大的方便,它使我们在C的内部就可以轻松准确地向V施令。C可以拥有很多的outlet,可以不止一个,这也使它可以更高效的和V进行交流。

接下来我们再来了解一下VC之间是如何进行交流的。V能通过三种方法与C进行交流,分别对应了链接CV的三条黄线。从左到右分别叫做数据源(data source)、委托(delegate)和目标操作(target-action)。View是不能拥有数据的,所以当需要显示数据的时候,View会发送出请求,以获得所需要的数据,这种方法就被称作数据源。第二种方法叫做委托,C把自己设置为V的委托(delegate),它让V知道:如果V想知道更多的关于将如何显示的信息的话,就向C发送delegate信息,大多数委托信息包括三种形式:“应该做吗?(should)”、“将要做(will)”和“已经做了(did)”。通过接受V发过来的delegate信息,C就会做出相应的协调和处理。第三种方法叫目标操作,图上表现得非常形象,C中会出现一个“靶子”,由V发出动作命中靶子完成操作,这一点可以更加形象地表示,“靶子”相当于我们在屏幕上看到的按钮,当我们按下按钮时,V发出了action,命中了C的目标时,C再调用相应的函数和类向M发出要求。

CMV之间的联系都是白色虚线,因此C能轻易的了解到MV中的全部信息。反过来,MCVC之间的联系是白色实线,区别于MV之间的黄色实线,原因是原则上MV虽不能直接影响C,但是当MV中的东西发生变化时,MV需要告诉C,因此,这里就需要cocoa中的KVOnotification机制,它们能将变化发送给C,区别只是notification是需要一个发送notification的对象来通知观察者,而kvo是直接通知到观察对象。

3、总结:

MVC的低耦合性、高重用性、可维护性等优点显而易见,使得原本复杂的代码与界面的交互变得简单、清晰、明了,开发者可以把更多的精力放在前端界面的设计上,而不用绞尽脑汁去思考究竟应该如何使界面得到同步,这样减轻了设计压力,也从另一方面使用户得到更多更好的享受体验。纵观ios经典Native App的所有应用软件,几乎都具有一个很大特点,那就是“炫”。清新的画面配以简单的手势操作,颠覆着用户的思维方式,小巧精悍。

在最初的JSP网页中,像数据库查询语句这样的数据层代码和像HTML这样的表示层代码混在一起。经验比较丰富的开发者会将数据从表示层分离开来,但这通常不是很容易做到的,它需要精心地计划和不断的尝试。MVC从根本上强制性地将它们分开。尽管构造MVC应用程序需要一些额外的工作,但是它带给我们的好处是毋庸置疑的。

多个视图能共享一个模型。如今,同一个Web应用程序会提供多种用户界面,例如用户希望既能够通过浏览器来收发电子邮件,还希望通过手机来访问电子邮箱,这就要求Web网站同时能提供Internet界面和WAP界面。控制器连接不同的模型和视图去完成用户的需求,也可以构造应用程序提供强有力的手段。给定一些可重用的模型和视图,控制器可以根据用户的需求选择适当的模型机型处理,然后选择适当的视图将处理结果显示给用户。在MVC设计模式中,模型响应用户请求并返回响应数据,视图负责格式化数据并把它们呈现给用户,业务逻辑和表示层分离,同一个模型可以被不同的视图重用,所以大大提高了代码的可重用性。

过去MVC模式并不适合小型甚至中等规模的应用程序,这样会带来额外的工作量,增加应用的复杂性。但现在多数软件设计框架,能直接快速提供MVC骨架,供中小型应用程序开发,此问题不再存在。对于开发存在大量用户界面,并且逻辑复杂的大型应用程序,MVC将会使软件在健壮性、代码重用和结构方面上一个新的台阶。尽管在最初构建MVC模式框架时会花费一定的工作量,但从长远的角度来看,它会大大提高后期软件开发的效率。

好的应用需要有好的体验,MVC模式正式为了提升用户体验而诞生的一种软件开发模式,虽然分离出MVC需要巧妙的构思以及完成更多的工作,但它更有利于软件的工程化管理,不同的层各司其职,使得软件的维护以及日后的升级更加从容与方便。在飞速发展的电子领域,技术的进步如白驹过隙,MVC要想获得巩固的地位,只要能更好地解决层与层之间的分离工作,不只是移动终端,MVC模式肯定将是日后软件开发的主流。

1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:28340次
    • 积分:604
    • 等级:
    • 排名:千里之外
    • 原创:32篇
    • 转载:2篇
    • 译文:0篇
    • 评论:6条
    最新评论