使用Swift的iOS上的MVVM架构模式

MVVM模型视图ViewModel )是用于在编程代码中分离各层的高级体系结构设计模式之一。

它是由Microsoft架构师Ken Cooper和Ted Peters发明的,用于简化UI中使用的事件驱动的编程,它是Microsoft WPF和Silverlight子系统的一部分。

除了MVVM模式外,还有另外2种是众所周知的,它们是MVC模型视图控制器 )和MVP模型视图演示器 )。

在本文中,我将仅描述MVVM。 我将在此处解释与此模式有关的所有必需的详细信息。 另外,我还将在这里以实际示例为例,说明为什么值得在您的iOS应用中使用它以及如何使用它。

愉快的阅读!

MVVM将代码分为3个高级层 。 从最低层到最高层看,它们如下:

  1. 最低的Model层,负责处理应用程序的领域模型,这些模型可以直接传递到更高的ViewModel层。 除了域模型定义之外,该层还提供存储,更新,删除和获取高层使用的数据的服务。
  2. 中间的ViewModel层负责使用较低的Model层提供的数据处理应用的业务逻辑,并对来自较高View层的用户交互进行逻辑处理。
  3. 最高的View层负责根据ViewModel的业务逻辑呈现适当的应用程序UI,并在那里处理Model的数据,还负责用户的交互,以捕获并传递它们以供较低ViewModel层处理。

在iOS代码中,当每个较大的组件的基类是UIViewControllerUIView时 ,这些类将充当View层。

在下面,您可以找到UML组件图,其中显示了具有相互依赖性的所有MVVM层。

答案很简单,将负责模型,业务逻辑和视图的3个基本层分开,这些基本层始终是每个iOS应用程序的一部分。 并且使它们彼此独立,不紧密耦合,而是相互补充。 使用MVVM模式准备它们使它们也可以在多个地方重用,并且可以独立测试,从而影响更好的代码稳定性和质量。 由于所有代码看起来干净,易读且令人愉悦,因此正好可以轻松地找到不需要集中所有不重要细节的内容。 对于软件架构师和软件工程师而言,最重要的是代码的组织合理,这就是我们所有人都应该追求的!

假设我们想实现一个非常简单的应用程序,使用户能够基于2个不同的搜索引擎来搜索人们的个人公共数据,假设它是Facebook和LinkedIn。 从UI角度来看,这些用户将能够选择上述引擎之一,以输入一些文本进行搜索,然后单击搜索按钮,然后将搜索结果返回给UI。

下面是一个示例性的iOS Swift代码原型,基于以上描述介绍了MVVM模式的用法。

模型组件

从以上所有描述中可以看到,但主要是在呈现的代码和UML图中,当您希望对iOS Swift代码进行分层时,MVVM体系结构设计模式似乎非常有用,尤其是在标题为“为什么要使用MVVM?”。 这就是为什么如果您关心此处提到的要求,并且希望您的代码满足这些要求,那么您绝对应该考虑在您的应用程序中使用这种方法。

我只想补充并强调,这不是实现这些目标的唯一方法,还有更多。 因此,我建议您熟悉其余的现有模式(至少是MVC,MVP,但也可以尝试VIPER作为iOS应用程序中非常流行的模式),然后选择最适合您和您的目的的模式。 您还应该尝试试验现有方法并进行修改。 也许您会发现一些值得关注和使用的新东西。 或者,也许您会发现到目前为止尚不存在的,通用且可重复使用的东西,这不仅是您自己的完美选择,也是我们成千上万的软件设计师和软件工程师的最佳选择。

祝您好运并成功搜索!