结合最近做的一个项目重构,谈一下自己对MVVM模式的理解。
简单介绍一下项目背景,这是一个基础组件--设置组件。

这些item项都是后台配置的,组件启动时,先加载缓存,然后异步读取配置的资源。
这个组件原本是按照传统MVC的模式来实现。造成了viewController特别厚重,业务逻辑耦合,代码复用率低等问题。如图:这个viewController已经有1300多行了。重构前的viewController主要负责的职责有:视图初始化,数据请求、解析,item项点击的回调block,登录登出的响应等等。因为设置的item项内容很多,包括 :分页,url地址,事件名,开关事件,组件跳转等等,所以viewController显得非常混乱。

根据数据绑定,职责划分,接口隔离等原则,对其进行重构。主要重构思路:将item项的点击事件代理出去,将数据请求、解析剥离出来给viewmodel来做。viewController只负责视图初始化和处理通知事件。


重构后,viewController的代码明显减少,整个组件的代码结构更加明确,职责分离。
网友评论