Skip to content

Instantly share code, notes, and snippets.

View oliveira-marcio's full-sized avatar
📱
Learning new stack

Márcio Souza de Oliveira oliveira-marcio

📱
Learning new stack
View GitHub Profile
@oliveira-marcio
oliveira-marcio / StateMachine.kt
Created January 10, 2020 17:45
State Machine
abstract class StateMachine<T, E>(
private val dispatcher: Dispatcher,
private val errorFactory: ErrorFactory<E>,
protected var currentState: State<T, E> = State(State.Name.IDLE),
private val listeners: MutableList<StateListener<T, E>> = mutableListOf()
) {
abstract fun start()
fun addStateChangedListener(listener: StateListener<T, E>) {
this.listeners.add(listener)