关于事件处理的负责制的讨论

缘由

做一个蓝牙方面的 APP,需要在系统进入休眠之前关闭蓝牙,在系统唤醒之后开启蓝牙。是否由这个系统事件来触发蓝牙的开与关?(开关广播,增删服务)

思考

虽然从表面上来看,将这个系统事件作为蓝牙的开关是自然而然的,把它写出来:

系统事件-->APP 中蓝牙的开关

怎么看上述关系都是很别扭的。仔细思考后,实际上有三个时间点来作这个开关:

  1. 系统事件时间点
  • APP 本身的活动时间点
  • 蓝牙状态变化时间点

可能这三个事件本身有一定的因果关系,但是是层层递进的,是有层次的。将蓝牙的想着设定放在系统级和 APP 级都是不合适的,放在蓝牙状态反转时最合适。

结论

  • 相应的事件处理要放在相应级别的状态的切换点。
  • 即使相应级别状态反转由其它层级决定,也应该增加相应的抽象。
    上一点作一下解释:
    层级 A状态变化-->层级 B状态变化,有一事件 层级B 的处理函数 SomeFunc()。若层级 B 没有相应的状态标识,自然想到的处理逻辑就是:
func stateAChange(){
  switch stateA{
    case1: //code
    case2: //code
    ...
   }
}

但是这个逻辑不明确,应该增加相应的抽象层,抽象出一个层级 B 的状态指示标识。

func stateAChange(){
  switch stateA{
    case1: stateB = //
    case2: stateB = //
    ...
   }
}
func stateBChange(){
   //code
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容