HarrisonXi / MvvmDemo

A MVVM demo for my blog
3 stars 0 forks source link

What should I do if I don't use Reactive Cocoa? #1

Open VineFiner opened 5 years ago

VineFiner commented 5 years ago

I think the MVVM I understand is the same as your MVP. How to implement MVVM?

我理解的MVVM和你的MVP一样,不使用Reactive Cocoa如何实现MVVM呢?

HarrisonXi commented 5 years ago

If you want to implement MVVM without a reactive framework (like RAC / Rx), you have to write a lot of data binding utils by yourself. KVO and event handler helper are necessary.

如果你想要不借助响应式框架(例如RAC和Rx)来实现MVVM,你必须自行实现大量的数据绑定工具。KVP还有事件响应辅助工具都是必须的。不过不强求的话,MVP一般已经够用了,你可以理解MVVM更多是为了代码结构易读。:)

VineFiner commented 5 years ago

您好,如果MVVM中使用KVO绑定,也是具体属性,set方法进行触发响应的。 和MVP中 delegate回调我认为区别不大。这个两个框架差别是哪里呢?

HarrisonXi commented 5 years ago

MVVM其实一个核心变化是思想的变化,核心编程方法会从面向对象&过程式->函数响应式编程(FRP)。

举个例子,传统编程去计算 x + y z,会先计算 a = x z,再计算 b = x + a,即预定义好逻辑后一步步计算,过程中出现的 a b x y z 都是值。

FRP概念下函数也可以参与运算,即我们会有个函数是f(x, a) = x + a,另一个函数式f(y, z) = y * z,最终我们计算时可以 a = f(y, z),即传递给a的不一定是一个确切值;并且整个过程中强调响应者逻辑,即y z变更了会影响f(y, z),进而影响f(x, a),不再去关心set操作。

RAC这种框架的作用就是把一切都转换为函数式+响应式思想,具体说起来可能很绕很难理解。我以前有看过一篇博客讲函数式编程讲的很好:http://blog.leichunfeng.com/blog/2015/11/08/functor-applicative-and-monad/