设计模式

一、MVC设计模式

1、模式分析

Models(模型):数据层,负责处理数据的数据接口层;

Views(视图):展示层,以UI开头的类基本属于Views;

Controller:重控制器,负责Model与View之间连接,当用户对View操作时它负责去修改相应的model;当Model值发生变化时它负责更新对应的View;

2、性能分析

划分层次:View和Model实现了分离,但View和Controller耦合太厉害;

可测性:划分不清楚,导致只有Model可进行测试;

易用性:相较于其他设计模式,代码量少,易上手。

3、模型分析图(摘自网络)

二、MVP设计模式

1、模式分析

Models:数据层

ViewController:视图控制器,实际扮演View的角色

Presenter:只负责更新数据和视图状态

2、性能分析

划分层次:划分了Presenter和Model以及简单的视图

可测性:可通过View来测试大部分的业务逻辑

易用性:思路清晰,但代码量较多

3、模型分析图(摘自网络)

三、MVVM设计模式

1、模式分析

Model:数据访问层

View:UI界面

ViewModel:View的抽象,负责View与Model之间的信息转换

2、性能分析

划分层次:划分了Model、View、以及ModelView,与其他设计模式主要区别在于ModelView的划分。

可测性: 因为ViewModel对View是分离的,测试简单。

易用性: 简洁、易用性较强。

3、模型分析图(摘自网络)

四、三种设计模式总结(附分析表)

1、就开发速度而言,Cocoa MVC是最好的架构选择方案

2、MVP可测试性强、代码量大

3、MVVM集合了上述方法的有点,可测试性很强。

五、ReactiveCocoa

结合了函数式编程、响应式编程使用RAC来解决问题,不需考虑调用顺序,直接考虑结果,代码高聚合,方便管理。

当某些事件响应时,可通过RAC来处理某些业务逻辑,比如按钮的点击使用action,ScrollView滚动使用delegate,属性值改变使用KVO等系统提供的方式。

六、体会

通过在网上查找ReactiveCocoa的相关资料接触到RACSiganl信号类,之前未曾接触使用过,还是存在一些难度,不能透彻了解。对MVC、MVP、MVVM这三种设计模式已有一定了解,希望在以后能够结合实际项目,进行学以致用。

七、重点参考资料

<1>http://www.ruanyifeng.com/blog/2015/02/mvcmvp_mvvm.html

<2>http://blog.csdn.net/li_shuang_ls/article/details/50176891

<3>http://www.cocoachina.com/ios/20160108/14916.html

<4>http://www.jianshu.com/p/87ef6720a096

<5>https://objccn.io/issue-13-1/