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 |