0%

Android构架系列之二--MVP&&Clean理解与实践之疑问

好几周没有更新博客了,不是忘记或者偷懒,而是想写一个比较复杂的话题,MVP与Clean构架的理解,既然是理解,不深入实践,自然不敢动笔,最近会多整理一些,补一补功课。

最近研读了Google发布的一系列框架的梳理中的MVP中的源代码,又学习了一些文章,同时自己也在工作中使用了基于MVP的Clean构架开发了浏览器的文件下载模块。这篇文章主要分析遇到的问题和一些感悟,同时记录一些疑问。
学习MVP的主要内容是

疑问

在使用Clean构架中遇到的几个疑惑,先记录一些,会不断的补充新的问题。尽量按照我遇到的顺序:

MVP相关

  • Clean与MVP的关系是什么?
  • MVP中V层接口的设计原则是什么?
  • MVP中V与P的对应关系?1:1,n:1,1:n??
  • MVP中V的所有操作都必须经过P吗?即使不涉及M的修改。
  • MVP中P需要主动去V中区数据吗?还是V主动把数据给P(PV?SoC?)

Clean相关

  • Clean中Presentation与Domain,Domain与Repository之间接口设计是必要的吗?
  • 可否把Clean构架理解成一种AsyncTask?
  • Domain中的UseCase是什么?它重吗?
  • 一个UseCase应该做多少事情?一件?一组相关的?划分逻辑是什么?
  • 多个UseCase如何组合
  • 后台线程的事件与UseCase如何通讯?异步通知
  • Domain的UseCase,需要默认在非UI线程中运行吗?
  • MVP中Presenter是否能设计为单例?Domain不能设计为单例?Repository必须设计为单例?
  • 内存缓存放在哪一层?Repository还是Domain还是都需要?前者缓存原始数据(未处理计算),后者缓存处理后的数据。如果一个domain需要多个Repository然后计算,结果数据需要缓存吗?
  • Domain的UseCase是否需要缓存设计?
  • Presenter是否需要缓存的设计?还是仅仅是数据引用?
  • Clean中Presentation层与domain层的UseCase职责分别是什么?
  • 一些Presentation层的Adapter,如何优雅的与Presenter结合
  • Data层的理解,什么才是data,图片是吗?
  • Cache如何设计合适,如何与原始数据同步?是否有最佳实践?
  • DBFlow可以启用他的缓存实现原始数据的缓存吗?

写作计划

之后的一系列文章包括:

欢迎关注我的其它发布渠道