@startuml package com.iluwatar.bloc { class Bloc { - currentState : State - listeners : List> + Bloc() + addListener(listener : StateListener) + decrement() - emitState(newState : State) + getListeners() : List> + increment() + removeListener(listener : StateListener) } class BlocUi { + BlocUi() + createAndShowUi() } interface ListenerManager { + addListener(StateListener) {abstract} + getListeners() : List> {abstract} + removeListener(StateListener) {abstract} } class Main { + Main() + main(args : String[]) {static} } interface StateListener { + onStateChange(T) {abstract} } } Bloc ..|> ListenerManager @enduml