iOS 开源库源码分析之状态机TransitionKit

状态机

有限状态机(finite-state machine),简称状态机。它有几个特征

  • 状态(state)总数是有限的
  • 任意时刻,只处在一种状态之中
  • 某种条件下,会从一种状态转变(transition)到另一种状态

状态机能够很好的管理复杂业务。在电商场景(订单,物流,售后),社交(IM消息投递),播放等都可以有很好的应用。适用于有一个明确 且复杂的状态流的场景。状态机能够很好的提高代码的可维护性和可测试性。

TKState

表示状态对象

里面会定义state的name以及四个重要的block(willEnter,didEnter,willExit,didExit)

TKEvent

表示事件对象

  • 目标状态destinationState

  • 定义有哪些可以到达目标状态的来源状态sourceStates

  • 以及是三个重要的block(shouldFireEvent,willFireEvent,didFireEvent)

TKTransition

一个事件中状态转换的对象

主要有事件对象,来源state

TKStateMachine

状态机对象

管理状态相关东西,

  • initialState,初始化的状态
  • states,所有的状态
  • currentState,当前的状态

管理事件相关的东西

  • events,所有的的事件
  • 添加事件

状态机相关的方法

  • activate方法,激活状态机,这个时候进入初始状态

  • canFireEvent方法,判断当前state是否在event的来源state数组中。

  • fireEvent: userInfo: error:方法,执行的内容包括下面

  • 判断状态机激活

  • 判断当前state是否在event的来源state数组中
  • 构造TKTransition对象
  • 调用event和state的相关回调

results matching ""

    No results matching ""