2017-08-07 70 views
0

我正在学习ios中的mvvm,并且与viewModels混淆。我应该为每个viewController创建一个viewModel吗?或者为每个模型创建viewModel?如果我选择为每个视图创建一个viewModel,那么我可能会在viewModel中使用多个模型。这不是一种代码味道吗?如何组织viewModels?

回答

3

模式的基本思想是有三层结构。在基础层上,有模型(有人称之为服务),为应用程序提供数据接口。 您构建View Models以包含应用程序的业务逻辑。这些当然会操纵数据。因此,在视图模型中使用多个模型是正确的,有时也是必需的。 视图使用从视图模型公开的属性向用户呈现数据并将数据从用户发送回业务逻辑。因此,通常每个视图模型都有一个视图,但您可能希望有不同的方式将相同的业务逻辑展示给用户,以便允许使用一个视图模型的更多视图也可以。最后,问题可能是:我应该创建多少个视图模型?答案并不容易:通常,作为一个起点,您可以创建一个视图模型来封装可通过单个页面呈现给用户的单个离散功能。当您更多地使用模式时,您可能会演变该模式。 这是一个非常基本的想法,它允许您从视图模型中独立测试模型,这应始终被认为是使用此模式最有用的优点之一。