MVP 设计模式中, Service 属于什么层?

2019-05-26 11:25:40 +08:00
 xdygxh

做了一个传感器应用,很多 Activity 要和传感器交互,所以写了一个 Service,应该属于什么层?

目前把它定义为 Model 层,因为它产生传感器数据!但是由于 mvp 中 Activity 不能直接和 Model 交互,所以用 presenter 传入 activity 进行服务绑定,但是经查 mvp 中 presenter 又应该是纯 java 类,绑定 service 显然掺杂了 Android。

怎么实现比较好?

6661 次点击
所在节点    Android
5 条回复
jinhan13789991
2019-05-26 11:48:42 +08:00
你怕不是有什么误解,p 是纯 java 层,activity 继承 v 传递给 p,service 继承 m 传递给 p
cxtrinityy
2019-05-26 11:52:43 +08:00
MVP 主要是用于界面开发,你要先理解这一点,界面变化在 V 里处理,逻辑在 p 里处理
明白了这些,就可以捋清楚了,一般会对 p 进行接口定义,然后具体什么类实现了这个接口,这个类就是具体的 p 实现,(即使你让 service 实现这个接口作为 p 本质上也没有问题,虽然在 android 里实际应用上有点问题)
至于你的 p 是怎么处理逻辑的就无所谓了,你要调用 service 就调,并不影响 service 是什么角色,service 只是逻辑处理的一环
janus77
2019-05-26 13:51:00 +08:00
算是 M 层
但是 MVP 里不是每个界面( V )都必须有独立的 M,也不是每个 M 都只服务一个界面。你这个属于多个界面共用 M 吧,不需要太过注重规范,甚至写成一个 manager 类 helper 类都没问题的
xdygxh
2019-05-26 14:30:12 +08:00
感谢大家,我确实对纯 Java 类有误解,我以为里面也不能出现 Android 的类。😓
misaka20
2019-05-27 10:27:04 +08:00
APP 分为三层架构或四层构架。 以三层构架为例: 数据层 - 业务层(Service) - 视图图(MVP、MVVM、MVC 等)。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/567739

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX