V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xdygxh
V2EX  ›  Android

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

  •  
  •   xdygxh · 2019-05-26 11:25:40 +08:00 via Android · 10610 次点击
    这是一个创建于 2013 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    怎么实现比较好?

    5 条回复    2019-05-27 10:27:04 +08:00
    jinhan13789991
        1
    jinhan13789991  
       2019-05-26 11:48:42 +08:00 via Android
    你怕不是有什么误解,p 是纯 java 层,activity 继承 v 传递给 p,service 继承 m 传递给 p
    cxtrinityy
        2
    cxtrinityy  
       2019-05-26 11:52:43 +08:00
    MVP 主要是用于界面开发,你要先理解这一点,界面变化在 V 里处理,逻辑在 p 里处理
    明白了这些,就可以捋清楚了,一般会对 p 进行接口定义,然后具体什么类实现了这个接口,这个类就是具体的 p 实现,(即使你让 service 实现这个接口作为 p 本质上也没有问题,虽然在 android 里实际应用上有点问题)
    至于你的 p 是怎么处理逻辑的就无所谓了,你要调用 service 就调,并不影响 service 是什么角色,service 只是逻辑处理的一环
    janus77
        3
    janus77  
       2019-05-26 13:51:00 +08:00
    算是 M 层
    但是 MVP 里不是每个界面( V )都必须有独立的 M,也不是每个 M 都只服务一个界面。你这个属于多个界面共用 M 吧,不需要太过注重规范,甚至写成一个 manager 类 helper 类都没问题的
    xdygxh
        4
    xdygxh  
    OP
       2019-05-26 14:30:12 +08:00 via Android
    感谢大家,我确实对纯 Java 类有误解,我以为里面也不能出现 Android 的类。😓
    misaka20
        5
    misaka20  
       2019-05-27 10:27:04 +08:00
    APP 分为三层架构或四层构架。 以三层构架为例: 数据层 - 业务层(Service) - 视图图(MVP、MVVM、MVC 等)。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3371 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 11:28 · PVG 19:28 · LAX 03:28 · JFK 06:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.