2017-10-17 20 views
-1

MVVM架构如何实现在Objective-C的MVVM架构?我需要示例项目来学习mvvm体系结构,并且我需要知道在model-view,viewModel以及如何在objective-c中分离需要什么?正常项目和mvvm项目有什么区别?实现在Objective-C

+0

问计库,教程是不是在这里有效的主题。如果您需要一个示例项目,请在线为您寻找一本教程。 –

回答

2

Jesto我可以给你详细介绍你简要问的问题。即使它是解释,你也可以很容易地理解我在这里发布的内容,因为它有源代码示例,你可以直接尝试源代码。

First the Model

模型层不如言自明,因为它看起来。如您所料,它将包含您的模型对象,可能包含覆盖大部分图层表面的 。在门票的例子中,你会有 有一个Ticket结构存在于你的模型中。

我发现下列组件也是模型层的一部分:

网络代码。形状应该是这样的。理想情况下,您只需在整个应用中使用一个班级进行网络通信。 持久性代码。你可以用Core Data实现这个,或者直接将NSData blob直接保存到磁盘。 解析代码。任何解析网络响应等的对象也应包含在模型层中。

虽然模型对象和解析器是域特定的,但网络代码将具有高度可重用性。

控制器将使用您的模型层中的所有元素来定义应用程序中的信息流。

Second the View

当用户与您的应用程序进行交互,它们与 视图层进行交互。该视图被认为是您的应用程序的“哑巴”部分,因为它不应包含任何业务逻辑,因为它是 。在代码方面,您通常会看到: :

UIView子类。这些范围从基本的UIView到复杂的自定义UI控件。 一个UIViewController(可以说)。由于一个UIViewController强烈与它自己的根的UIView和其不同的周期 (的loadView,viewDidLoad中)耦接,我个人认为这是本 层的一部分,但不是每个人都同意。 动画和UIViewController转换。 属于UIKit/AppKit,Core Animation和Core Graphics的类。

在此图层中找到的典型代码气味以不同方式显示, 但归结为在您的视图 图层中包含与UI无关的任何内容。一个典型的代码味道是从一个 UIViewController进行网络调用。

在你的UIViewController中放入一堆代码并且使用 来完成它是很诱人的,所以你可以达到那个期限。不要这样做!在短期的 期限内,您可能会节省几分钟时间,但从长远来看,您可能会在寻找错误时损失数小时,或者在想要在另一个视图控制器内重用代码时遇到问题。

Third MVVM

模型 - 视图 - 视图模型,或MVVM,是一个MVC推导。从概念上讲,它与 类似。最大的区别在于 层之间的通信,而不是控制器,您使用视图模型。

实际上,当MVVM具有FRP框架来支持MVVM时,它会发光。 由于模型现在由视图模型和视图模型 观察到,所以FRP范例成为管理信息流的自然选择。这导致层之间的更好的分离, 它转换为易于测试的解耦组件。底线:体系结构很重要,但在我看来,正确的 编程范例将影响更多的代码的整体质量。同样重要的是要注意,通常情况下,您不会在同一应用中使用不同的方法。这包括 体系结构和范例。你可能会认为这会破坏代码库中的 一致性,但你应该总是使用正确的 工具来完成这项工作。

Finally MVC

模型 - 视图 - 控制器(MVC)设计模式在 应用三种角色中的一个分配对象:模型,视图或控制器。 模式不仅定义了对象在应用程序中扮演的角色,还定义了对象之间相互通信的方式。通过抽象边界 将三个物体类型中的每一个与其他物体分开,并与其他类型的物体通过这些边界进行通信。 应用程序中某个MVC类型对象的集合有时称为图层 - 例如,模型 图层。

MVC是Cocoa应用程序良好设计的核心。采用这种模式的好处 很多。这些应用程序中的许多对象往往更易于重用,并且它们的接口倾向于更好地定义为 。具有MVC设计的应用程序也比其他应用程序更容易扩展。此外,很多Cocoa技术和体系结构都基于MVC,并且要求您的自定义对象扮演MVC角色之一。

Difference between Normal and MVVM

模型 - 负责域数据或操纵数据的数据访问层 ,认为“人”或“的personDataProvider” 类。

观看次数 - 负责表示层(GUI),iOS环境下的任何事情都考虑以'UI'前缀开头的所有内容。

控制器/演示/视图模型 - 胶水或模型和视图之间的调停,一般负责通过使对视图执行用户的操作和更新 与从变化视图改变模型 该模型。

MVVM Says

最新和最伟大的MV(X)种的MVVM是MV的最新 (X)样因此,让我们希望它出现在考虑的问题 MV( X)以前面临。从理论上讲,Model-View-ViewModel看起来非常不错。视图和模型对我们来说已经很熟悉,但也是代表视图模型的调解器。 MVVM这是很相似 的MVP: 的MVVM把视图控制器作为视图 还有就是视图和模型此外,它确实像MVP的监督版本绑定之间没有紧密结合;然而,这次不是在视图和模型之间,而是在 视图和视图模型之间。那么iOS现实中的视图模型是什么? 它基本上是你的视图和它的 状态的UIKit独立表示。视图模型调用示范和变化与更新的型号更新自己 ,并且由于视图 和视图模型之间,我们有一个结合,第一个相应的更新。

而且the MVVM Design PatternHow does MVVM work?