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
Model-View-ViewModel 或 MVVM 是 MVC 派生的。从概念上讲,
很相似。最大的不同在于之间的沟通
层,而不是控制器,而是使用视图模型。
在实践中,当 MVVM 有一个 FRP 框架来支持它时,它就会大放异彩。
由于模型现在由视图模型和视图模型观察
这种观点认为,FRP 范式成为管理
信息流。这导致层之间更好的分离,
这转化为易于测试的解耦组件。
底线:架构很重要,但我认为正确
编程范式将更多地影响您的整体质量
代码。同样重要的是要注意,大多数情况下不是,你会
在同一个应用程序中有不同的方法。这包括两者
架构和范式。你可能认为这会扰乱
代码库内部的一致性,但您应该始终使用正确的
工作的工具。
Finally MVC
模型-视图-控制器 (MVC) 设计模式将对象分配到一个
应用程序的三个角色之一:模型、视图或控制器。这
模式不仅定义了对象在应用程序中扮演的角色,它
定义对象相互通信的方式。三者中的每一个
对象的类型通过抽象边界与其他对象分开
并通过这些对象与其他类型的对象进行通信
边界。一个特定 MVC 类型的对象的集合
应用程序有时被称为层——例如,模型
层。
MVC 是 Cocoa 应用程序良好设计的核心。好处
采用这种模式的人很多。这些对象中有很多
应用程序往往更具可重用性,并且它们的接口往往是
更好的定义。具有 MVC 设计的应用程序也更容易
比其他应用程序可扩展。此外,许多 Cocoa 技术
和架构基于 MVC 并要求您的自定义
对象扮演 MVC 角色之一。
Difference between Normal and MVVM
模型 — 负责域数据或数据访问层
操纵数据,想想“Person”或“PersonDataProvider”
类。
视图 — 负责表示层 (GUI),对于 iOS 环境,请考虑以“UI”前缀开头的所有内容。
Controller/Presenter/ViewModel — 模型和视图之间的粘合剂或中介,通常负责改变模型
通过对用户在视图上执行的操作做出反应并更新
具有模型更改的视图。
MVVM Says
最新和最伟大的 MV(X) 类型 MVVM 是最新的
因此,MV(X)类型的,让我们希望它在考虑到问题的情况下出现
MV(X) 先前面对。理论上模型-视图-视图模型看起来
很好。 View 和 Model 我们已经很熟悉了,
中介者,表示为视图模型。 MVVM 非常相似
给MVP:
MVVM 将视图控制器视为视图
View 和 Model 之间没有紧密耦合。另外,它像 MVP 的 Supervising 版本一样进行绑定;
然而,这一次不是在 View 和 Model 之间,而是在
视图和视图模型。那么 iOS 现实中的 View Model 是什么?
它基本上是您的 View 的 UIKit 独立表示及其
状态。 View Model 调用 Model 中的更改并自行更新
使用更新的模型,并且因为我们在视图之间有一个绑定
和视图模型,第一个相应地更新。
还有the MVVM Design Pattern 和How does MVVM work?