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

状态机

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

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

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

TKState

表示状态对象

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

TKEvent

表示事件对象

  • 目标状态destinationState

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

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

TKTransition

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

top Created with Sketch.