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 |