vlambda博客
学习文章列表

蓝鸥韩山虎老师教你如何学习MVVM 和函数响应式编程

昨天分享的关于的文章,很多人给小编留言:32个赞都不够,太棒了。谢谢老师的分享。那今天继续分享来自韩山虎老师的博客中关于MVVM 和函数响应式编程。


小编觉得一个好的老师,一个好的分享者一定是带给别人思考的,引导读者学习并产生新的内容。为什么这么说呢?看完下面这篇文章就知道了!


1. MVVM

MVVM模式是Model-View-ViewMode模式的简称。由视图(View)、视图模型(ViewModel)、模型(Model)三部分组成,结构如下图。


通过这三部分实现UI逻辑、呈现逻辑和状态控制、数据与业务逻辑的分离。


使用MVVM模式有几大好处:

1. 低耦合。View可以独立于Model变化和修改,一个ViewModel可以绑定到不同的View上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。


2. 可重用性。可以把一些视图的逻辑放在ViewModel里面,让很多View重用这段视图逻辑。


3. 独立开发。开发人员可以专注与业务逻辑和数据的开发(ViewModel)。设计人员可以专注于界面(View)的设计。


4. 可测试性。可以针对ViewModel来对界面(View)进行测试


1. 视图(View)

视图负责界面和显示。它通过DataContext(数据上下文)和ViewModel进行数据绑定,不直接与Model交互。 


可以绑定Behavior/Comand来调用ViewModel的方法,Command是View到ViewModel的单向通行,通过实现Silverlight提供的IComand接口来实现绑定,让View触发事件,ViewModel来处理事件,以解决事件绑定功能。


2. 视图模型(ViewModel)

视图模型主要包括界面逻辑和模型数据封装,Behavior/Command事件响应处理,绑定属性定义和集合等。


它是View和Model的桥梁,是对Model的抽象,比如:Model中数据格式是“年月日”,可以在ViewModel中转换Model的数据为“日月年”供View显示。


实现视图模型需要实现Silverlight提供的接口INotifyPropertyChanged, INotifyPropertyChanged接口用于实现属性和集合的变更通知(Change Notifications)。


使得在用户在视图上所做的操作都可以实时通知到视图模型,从而让视图模型对象有的模型进行正确的业务操作。


View的代码隐藏(Code-Behind)部分可能包含界面逻辑或者应用逻辑的代码,这些代码会很难进行单元测试,应根据具体情况尽量避免。


2. RAC


什么是 ReactiveCocoa


ReactiveCocoa(其简称为 RAC)是由Github开源的一个应用于 iOS 和 OS X 开发的新框架。RAC 具有函数式编程和响应式编程的特性。


它主要吸取了 .Net 的的设计和实现。


ReactiveCocoa 试图解决什么问题


1. 传统 iOS 开发过程中,状态以及状态之间依赖过多的问题


2. 传统 MVC 架构的问题:Controller 比较复杂,可测试性差


3. 提供统一的消息传递机制


一些学习资源

博客 & 教程
















代码



书籍


视频