Swift 3的MVC架构简介

MVC背后的梦想

MVC是用于强大的面向对象编程的强大iOS体系结构模式。 它可以将应用程序的数据/逻辑,视图和控制器清晰地分开。 理想情况下,模型和视图不应直接交互,而控制器应进行调解。 如果使用后端或本地存储系统,则更新模型对象的逻辑应在这些模型文件中。 视图应该是“哑”的,并且只能处理与演示文稿相关的任务。

现实

大规模视图控制器。

通常,遵循MVC设计模式的应用程序具有绝对庞大的视图控制器文件,可以执行所有操作。 另外,您的应用程序一定会违反MVC规则,这几乎是不可避免的。

视图可能会直接与您的应用程序数据交互,或者模型可能会更新用户在屏幕上看到的内容。 根据MVC和Apple的说法,这是不容忽视的,但它一直都在发生。

我应该为我的应用程序使用MVC吗?

如果您只是刚入门或正在构建相对简单的应用程序,则MVC很可能是完美的。 让UIViewController对象做很多不同的事情是创建简单应用程序的一种非常简单的方法。 MVC已建立并且有据可查,因此很容易找到很好的例子。

Apple关于MVC的文档:

https://developer.apple.com/library/content/documentation/General/Conceptual/DevPedia-CocoaCore/MVC.html

一些替代方案:

MVVM —模型,视图,ViewModel

Swift中的MVVM – Artsy工程
模型视图ViewModel已成为我在iOS上编写应用程序的默认方式–它使编写iOS应用程序变得很有趣。 我写了…… artsy.github.io

VIPER —视图,交互器,演示者,实体,路由

使用VIPER构建iOS应用程序·objc.io
objc.io出版有关iOS和OS X开发的高级技术和实践的书籍 www.objc.io

对于初学者来说,其他设计模式可能较难入手,但是,如果您要开发复杂的应用程序,那么从长远来看,了解和采用MVVM或VIPER可能对您和您的团队有所帮助。

当今,大多数流行的应用程序都使用自己的设计模式-通常是传统模式的混合。

给那些使用MVC的人一些最终提示

  1. 给您的对象明确的责任,不要偏离他们。
  2. 使您的视图可重用,灵活且可测试。
  3. 尽量保持控制器清洁。 调试会容易得多。