@startuml package mqtt_actor { struct MqttConnectionManager{ from(..) -> Self add_subscription(..) start() } annotation MqttPublisher struct MqttPublisherActor struct MqttPublisherActor_mock #gray interface Subscription 'struct DumpHandler #white 'Struct EchoHandler #white 'struct "echoHandler >" as strmsg #white MqttConnectionManager *-- MqttPublisher: publisher_actor MqttPublisher <|-- MqttPublisherActor MqttPublisher <|-- MqttPublisherActor_mock : <> 'Subscription <|-- DumpHandler 'Subscription <|-- EchoHandler 'MqttPublisher ..|> strmsg : implement 'EchoHandler --> strmsg: calls } struct yourSubscription yourSubscription --|> Subscription yourSubscription --* MqttConnectionManager : [0:N] struct yourActor #white yourSubscription -> yourActor: can call struct "your Handler >" as message MqttPublisher ..|> message : implement [0:N] yourActor --> message: can call @enduml