MVI 设计模式专注于 web 世界,也就是请求数据然后将数据展示给用户。其实服务端来数据就像数据流,数据流会有许多状态需要开发者对其处理。现在已经有了许多解决方案,像 MVC MVP MVVM 来解决这些问题,那么我们为什么还需要 MVI,也就是 MVI 相对于他们有什么不同和优势呢?
图使用 MVP 来请求后台数据,这里在 Presenter 我们不得根据请求(或者叫数据流)不同状态来处理状态,例如显示加载器,展示数据,隐藏加载器等…。其实 presenter 问题。我现在项目用的就是 MVP 。
图 图同样的问题也发生在 MVVM 设计模式中,这里代码我们需要根据数据的状态,传入 false 或 true 给 loading.setValue 方法来控制是否显示加载器。 单看上面的代码你可能没有什么柑橘,不过实际开发起来,看到大部分重复的代码,你就烦了。
图由于开发web 应用,我们会根据网络的情况而受到制约,这给开发者的开发和调试带来不少麻烦。
这里我们用户界面,一个用户,用户通过点击(操作)来触发一个 intent,我们都知道在 Android 中 intent 可以启动一个 Activity 或一个 service。这里叫做 intent 是因为我们用户改变了他兴趣点。同时也启动我们的状态机,状态机进行一些处理然后返回一个新的状态。
图我们先看一眼 State(状态机)长什么模样,其实这里状态机就是我们定义一个 State 类。提供页面的状态,例如加载中,显示内容或是提示错误等。
看一下架构图,当View 发生了变化,通知 ViewModel 或是Presenter,让后由他们传递给StateMachine(状态机),状态机处理业务逻辑,并产生一个新的state(状态)返回 presenter/ViewModel,最终根据状态来更新 View。
网友评论