82 lines
2.1 KiB
Plaintext
82 lines
2.1 KiB
Plaintext
@startuml
|
|
package com.iluwatar.databus {
|
|
class AbstractDataType {
|
|
- dataBus : DataBus
|
|
+ AbstractDataType()
|
|
+ getDataBus() : DataBus
|
|
+ setDataBus(dataBus : DataBus)
|
|
}
|
|
~class App {
|
|
~ App()
|
|
+ main(args : String[]) {static}
|
|
}
|
|
class DataBus {
|
|
- INSTANCE : DataBus {static}
|
|
- listeners : Set<Member>
|
|
+ DataBus()
|
|
+ getInstance() : DataBus {static}
|
|
+ publish(event : DataType)
|
|
+ subscribe(member : Member)
|
|
+ unsubscribe(member : Member)
|
|
}
|
|
interface DataType {
|
|
+ getDataBus() : DataBus {abstract}
|
|
+ setDataBus(DataBus) {abstract}
|
|
}
|
|
interface Member {
|
|
+ accept(DataType) {abstract}
|
|
}
|
|
}
|
|
package com.iluwatar.databus.data {
|
|
class MessageData {
|
|
- message : String
|
|
+ MessageData(message : String)
|
|
+ getMessage() : String
|
|
+ of(message : String) : DataType {static}
|
|
}
|
|
class StartingData {
|
|
- when : LocalDateTime
|
|
+ StartingData(when : LocalDateTime)
|
|
+ getWhen() : LocalDateTime
|
|
+ of(when : LocalDateTime) : DataType {static}
|
|
}
|
|
class StoppingData {
|
|
- when : LocalDateTime
|
|
+ StoppingData(when : LocalDateTime)
|
|
+ getWhen() : LocalDateTime
|
|
+ of(when : LocalDateTime) : DataType {static}
|
|
}
|
|
}
|
|
package com.iluwatar.databus.members {
|
|
class MessageCollectorMember {
|
|
- LOGGER : Logger {static}
|
|
- messages : List<String>
|
|
- name : String
|
|
+ MessageCollectorMember(name : String)
|
|
+ accept(data : DataType)
|
|
+ getMessages() : List<String>
|
|
- handleEvent(data : MessageData)
|
|
}
|
|
class StatusMember {
|
|
- LOGGER : Logger {static}
|
|
- id : int
|
|
- started : LocalDateTime
|
|
- stopped : LocalDateTime
|
|
+ StatusMember(id : int)
|
|
+ accept(data : DataType)
|
|
+ getStarted() : LocalDateTime
|
|
+ getStopped() : LocalDateTime
|
|
- handleEvent(data : StartingData)
|
|
- handleEvent(data : StoppingData)
|
|
}
|
|
}
|
|
AbstractDataType --> "-dataBus" DataBus
|
|
DataBus --> "-INSTANCE" DataBus
|
|
DataBus --> "-listeners" Member
|
|
AbstractDataType ..|> DataType
|
|
MessageData --|> AbstractDataType
|
|
StartingData --|> AbstractDataType
|
|
StoppingData --|> AbstractDataType
|
|
MessageCollectorMember ..|> Member
|
|
StatusMember ..|> Member
|
|
@enduml |