关于mvc、mvp、mvvm这些模式的个人理解
分析一下三种模式
很多人纠结于用以上哪个模式来开发会更好,其实我认为结合起来使用最佳。
软件工程的思想强调:高内聚、低耦合,这几个模式都是为了实现这个目标而产生的。
mvc会导致model、view、controller耦合在一起,互相分不开,适用于简单、不需要重用的界面,将mvc三者耦合在一起,实际上就是高内聚,不过主要业务还是在controller里实现,所以controller代码量相对较大。
mvp可以将model、view分离出去,适用于重用页面和model的场景,将controller作为presenter来使用model和view,view和model就得到了解放,所有人都可以分享使用它们了,然而代价也是存在的,controller把mvc写在model和view里的代码转移到了自己这里,代码量变的非常庞大。
mvvm的话view和model绑定,非常科学的方式,将界面变动跟model数据改变绑定在一起,减轻了controller的负担。
我的做法
简单的页面我依旧会使用mvc这种清晰并且简单的方式来开发。
有很多界面类似,数据结构天差地别的界面,使用mvp会最好的情况,我会将view做成轮子,方便使用。将model抽象化,操作model的功能抽象成方法写在model的类中。将controller中数据部分抽象分离一个DataSource类。这都是为了减轻controller的负担,也能减少mvc之间的耦合。
至于mvvm,其实适用于各种场景,不过比较依赖于第三方框架来实现,iOS的系统自带的KVO其实是一种实现方式,我也有用到,但是我更倾向于使用Notification,可以降低mv之间耦合,更加轻量,更加灵活。
总结
一个项目,是庞大的,设计模式是为了开发而设计出来的,没有必要一个工程只用一个模式,视情况而定,低耦合是核心。