java-design-patterns/event-driven-architecture/etc/event-driven-architecture.urm.puml
2019-12-07 18:03:49 +02:00

64 lines
1.6 KiB
Plaintext

@startuml
package com.iluwatar.eda.handler {
class UserCreatedEventHandler {
- LOGGER : Logger {static}
+ UserCreatedEventHandler()
+ onEvent(event : UserCreatedEvent)
}
class UserUpdatedEventHandler {
- LOGGER : Logger {static}
+ UserUpdatedEventHandler()
+ onEvent(event : UserUpdatedEvent)
}
}
package com.iluwatar.eda.event {
abstract class AbstractEvent {
+ AbstractEvent()
+ getType() : Class<? extends Event>
}
class UserCreatedEvent {
- user : User
+ UserCreatedEvent(user : User)
+ getUser() : User
}
class UserUpdatedEvent {
- user : User
+ UserUpdatedEvent(user : User)
+ getUser() : User
}
}
package com.iluwatar.eda.framework {
interface Event {
+ getType() : Class<? extends Event> {abstract}
}
class EventDispatcher {
- handlers : Map<Class<? extends Event>, Handler<? extends Event>>
+ EventDispatcher()
+ dispatch(event : E extends Event)
+ registerHandler(eventType : Class<E extends Event>, handler : Handler<E extends Event>)
}
interface Handler<E extends Event> {
+ onEvent(E extends Event) {abstract}
}
}
package com.iluwatar.eda.model {
class User {
- username : String
+ User(username : String)
+ getUsername() : String
}
}
package com.iluwatar.eda {
class App {
+ App()
+ main(args : String[]) {static}
}
}
UserCreatedEvent --> "-user" User
UserUpdatedEvent --> "-user" User
AbstractEvent ..|> Event
UserCreatedEvent --|> AbstractEvent
UserUpdatedEvent --|> AbstractEvent
UserCreatedEventHandler ..|> Handler
UserUpdatedEventHandler ..|> Handler
@enduml