一次项目重构过程

节前项目算是完成了一个比较重要的阶段,在接手这个项目时,我发现其中架构问题比较严重需要进行一次重构。这篇文章记录一下重构的几个要点。

在原有的架构中,是一个简易版本的MVC设计。但项目中涉及到很多关联数据运算,这些运算都包装在M层当中,这就导致M变得十分复杂。与此同时,每一M封装不仅用于逻辑运算还用于视图显示。在一个角色的M封住中,已经很难明确的区分出哪些属性是用来做逻辑运算,哪些属性用来做显示用的。

基于上面的问题,我需要一个全新的M层,将原有的数据运算拆分出去,因为此时的性能问题已经暴露出来。但老旧的M中很多属性和视图关联。如果要做的彻底一些,我需要将原有一个M封装一分为三。这样的操作难以保证逻辑还能正常运行,为此我先建立一个全新的M用于做逻辑运算使用。

为了保证项目能正常运行,我将原有的M定义为ViewModel,这样项目从一个MVC结构逐步向MVVM结构靠拢。

原有的业务逻辑中,一部分逻辑被放入了V一层中。针对各个功能模块需要抽离出一层C,这块相对比较简单一些因为在原有C中绝大部分是接受或者发送网络请求。在拥有了比较完整的C之后,我在C和M直接增加一个Service层。Service层作为真正的逻辑模块,而C层则根据需要调用各个Service中的接口。

最后在两个M直接追加一个基类,并支持单向绑定功能。当我们打开一个面板,并进行操作的时候,各层的数据流转传递变成了下面一个流程。

V -> C -> 网络操作 -> 接受网络数据 -> C -> Service -> M -> ViewModel -> C -> V