banana000 2019-06-27
原文地址:https://github.com/HolyZheng/...
mvc分为 model,view,controller三个部分
缺点:
- controller测试困难,因为同步操作是由view发出的。
- view依旧依赖与model,难以组件化。
优点:
- 实现了关注点分离,简化了整体的维护
- 解耦了model和view,让每个模块开发更加独立
ps:关注点分离是指,各种技术负责自己的领域,不要混合在一起,形成耦合
mvp分为:model,view,presenter三个部分
mvp与mvc的区别在于:view(视图)与model(模型)之间有着更清晰的分离,view到model,model到view的数据同步都被转移到了presenter中
优点
- 测试较为方便,presenter对view的操作是通过接口进行的,可通过mock接口方式完成对presenter的测试
- view可组件化,因为view不依赖与model,view对业务无知,只需要提供一系列接口给上层的操作,可做到高度可复用的组件。
缺点
presenter中除了应用逻辑之外,还有大量的view -》model,model -》view的手动同步逻辑,造成presenter比较重,维护起来困难。
mvvm分为view,model,viewmodel三部分
优点
- 提高了可维护性,双向数据绑定机制解决了mvp中大量的手动view与model的同步问题
- 简化测试,减少了对view同步更新的测试
缺点
- 过于简单的页面不适合
- 大型应用中,视图状态较多,viewModel的构建和维护成本高
- view模板中的数据状态,无法打断点调试
flux是一种架构模式,它利用单向数据流的方式来管理数据。
这里有几个关键的概念
视图层组件不直接修改应用状态,只能出触发action,应用状态必须独立出来放到store中同一管理,通过见监听action来执行具体的状态操作。
LOGGER.info("compose executed");return stringFlux.map(e -> e + "$");LOGGER.info("flatMap executed&qu