mvc架构模式与视图控制器的作用

     MVC(Model View Controller, 即模型-视图-控制器) 是一种常用的架构划分方式,它将软件分成三个主要组成部分,即模型(Model)、视图(View)与控制器( Controller)。其中模型就是指程序内部的数据及其结构,例如各种数据对象、结构体、链表、二叉树等。视图主要是指用户界面,它们以各种方式显示模型中的数据,并允许与用户进行交互。控制器就是根据业务逻辑的要求对模型进行各种操作,并在模型与视图之间进行更新与同步。

    要实现相同的目标往往存在着多种实现方式,正所谓‘殊途同归’。但是看上去比较直观的实现方式往往并不是最佳的解决方案。如果将程序的界面操作、数据读取以及事件处理代码都编写在同一个类中,这样会导致很对潜在的问题。首先,程序难以扩展。比如,要向现有的程序中添加一个新功能,首先需要把代码都仔仔细细读懂(即使这些代码可能与添加新功能完全无关),然后小心地添加新代码,并需要保证新代码不会和老代码发生冲突。其次,程序开发效率极低。由于所有代码都混在一起,对代码的版本控制很麻烦,而且很难做到很多人同时并行开发。还有一个严重的问题是代码没法复用。由于代码之间的关联(耦合)太紧密,导致代码只适用于当前程序,很难假期一直到其他项目中。

  良好的变成习惯与清晰的程序结构远胜于使用新技术。应用MVC架构模式可以有效解决上述问题,它使得程序的结构更分明,并大大降低了代码之间的关联。而且,苹果已经为我们做了很多事情,自动引导我们遵从MVC划分方式。例如,我们前面所学的视图UIView隶属于MVC中的视图部分,而接下来我们要学习的视图控制器UIViewController属于MVC中的控制器部分。

   UIKit借鉴了MVC中的分层思想,提出了视图控制器的概念。视图控制器是UIViewController对象,它主要由以下两个作用:

    首先,视图控制器担当MVC中的控制器角色,即负责底层数据与用户界面之间的同步。视图控制器可以对底层数据进行修改,同时他也会负责更新着这些数据对应的用户界面。每个视图控制器会负责更新视图树中的一棵树,它会将该子树的根节点与其相关联,然后对子树中的所有视图进行创建、显示、更新、隐藏、销毁以及控制视图间的切换等操作。

  其次,处理担当MVC中的控制器角色外,视图控制器还能够响应一些重要事件,如内存不足、设备旋转等。在发生上述情况后,视图控制器会进行必要的处理。视图控制器提供了许多ios界面中通用的界面行为,这些行为是默认的但也允许对其进行个性化定制。

你可能感兴趣的:(mvc架构模式与视图控制器的作用)