1+ @startuml
2+ package com . iluwatar . databus {
3+ class AbstractDataType {
4+ - dataBus : DataBus
5+ + AbstractDataType ()
6+ + getDataBus () : DataBus
7+ + setDataBus(dataBus : DataBus)
8+ }
9+ ~ class App {
10+ - log : Logger {static}
11+ ~ App ()
12+ + main (args : String []) {static }
13+ }
14+ class DataBus {
15+ - INSTANCE : DataBus {static}
16+ - listeners : Set<Member>
17+ + DataBus ()
18+ + getInstance() : DataBus {static}
19+ + publish(event : DataType)
20+ + subscribe(member : Member)
21+ + unsubscribe(member : Member)
22+ }
23+ interface DataType {
24+ + getDataBus () : DataBus {abstract }
25+ + setDataBus (DataBus ) {abstract }
26+ }
27+ interface Member {
28+ + accept (DataType ) {abstract }
29+ }
30+ }
31+ package com . iluwatar . databus . data {
32+ class MessageData {
33+ - message : String
34+ + MessageData(message : String)
35+ + getMessage () : String
36+ + of(message : String) : DataType {static}
37+ }
38+ class StartingData {
39+ - when : LocalDateTime
40+ + StartingData(when : LocalDateTime)
41+ + getWhen () : LocalDateTime
42+ + of(when : LocalDateTime) : DataType {static}
43+ }
44+ class StoppingData {
45+ - when : LocalDateTime
46+ + StoppingData(when : LocalDateTime)
47+ + getWhen () : LocalDateTime
48+ + of(when : LocalDateTime) : DataType {static}
49+ }
50+ }
51+ package com . iluwatar . databus . members {
52+ class CounterMember {
53+ - log : Logger {static}
54+ - name : String
55+ + CounterMember(name : String)
56+ + accept(data : DataType)
57+ - handleEvent(data : MessageData)
58+ }
59+ class StatusMember {
60+ - id : int
61+ - log : Logger {static}
62+ + StatusMember(id : int)
63+ + accept(data : DataType)
64+ - handleEvent(data : StartingData)
65+ - handleEvent(data : StoppingData)
66+ }
67+ }
68+ AbstractDataType --> "- dataBus " DataBus
69+ DataBus --> "- INSTANCE " DataBus
70+ DataBus --> "- listeners " Member
71+ AbstractDataType ..|> DataType
72+ MessageData --|> AbstractDataType
73+ StartingData --|> AbstractDataType
74+ StoppingData --|> AbstractDataType
75+ CounterMember ..|> Member
76+ StatusMember ..|> Member
77+ @enduml
0 commit comments