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

2015-11-30  本文已影响26人  无影灯

缘由

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

思考

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

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

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

  1. 系统事件时间点

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

结论

func stateAChange(){
  switch stateA{
    case1: //code
    case2: //code
    ...
   }
}

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

func stateAChange(){
  switch stateA{
    case1: stateB = //
    case2: stateB = //
    ...
   }
}
func stateBChange(){
   //code
}
上一篇 下一篇

猜你喜欢

热点阅读