最近在尝试用 MVP 架构重构项目,遇到一个疑惑,求解答
一个注册业务逻辑分三步对应三个界面,后面的步骤都依赖前一步返回的数据,建立 presenter 的时候有 2 种方法
尝试方法一,传递数据的时候要先把数据传递给 view,再通过 view 传递给下一个 presenter ,数据和视图耦合了
尝试方法二,必须保证每个界面获取同一个 presenter 实例,似乎要把 presenter 写成单例
不知道大家有没有更好的解决方法?
1
anthonyeef 2016-04-12 22:46:03 +08:00
|
2
TVBG 2016-04-12 22:50:46 +08:00
要看具体的情况,不过应该可以考虑把数据放到 Model 里面。
|
3
nekocode 2016-04-12 22:51:16 +08:00
你方法一描述得不够仔细,无法看出具体的问题,不过你可以参考下这个帖子 https://www.reddit.com/r/androiddev/comments/3lx99j/mvp_where_to_put_activity_intent
帖子表达的意图很清楚:页面之间跳转是应该在 View 层实现的。 另外方法二是不推荐的,通常 View 与 Presenter 是一对一或一对多的关系,你把 Presenter 设计成单例的话, Presenter 的生命周期就在各个 View 之上了,处理不小心的话很容易造成内存泄漏。 |
4
Yasic 2016-04-12 23:36:32 +08:00
个人一般遵循 “一个 presenter 对应一个 view ” 的原则,至于传递数据,具体是哪种情况需要把数据先传给 view 再传给下一个 presenter ? view 只应该跟对应的 presenter 通信
|
5
LinkZhang OP @Yasic 第一步需要请求服务器获取 token ,后面的请求都要使用这个 token ,如何把 token 传递给后面的 present 呢
|
6
Yasic 2016-04-13 09:47:19 +08:00
@LinkZhang 这种在 app 运行周期里“多次访问少量更新”的数据一般会采取本地存储( SharedPreferences ,数据库, contentprovider 。。)或者静态资源访问的方式,类似于这里讨论的 https://www.v2ex.com/t/264641#reply8
|