74 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| @startuml
 | |
| package com.iluwatar.event.aggregator {
 | |
|   class App {
 | |
|     + App()
 | |
|     + main(args : String[]) {static}
 | |
|   }
 | |
|   enum Event {
 | |
|     + STARK_SIGHTED {static}
 | |
|     + TRAITOR_DETECTED {static}
 | |
|     + WARSHIPS_APPROACHING {static}
 | |
|     - description : String
 | |
|     + toString() : String
 | |
|     + valueOf(name : String) : Event {static}
 | |
|     + values() : Event[] {static}
 | |
|   }
 | |
|   abstract class EventEmitter {
 | |
|     - observers : List<EventObserver>
 | |
|     + EventEmitter()
 | |
|     + EventEmitter(obs : EventObserver)
 | |
|     # notifyObservers(e : Event)
 | |
|     + registerObserver(obs : EventObserver)
 | |
|     + timePasses(Weekday) {abstract}
 | |
|   }
 | |
|   interface EventObserver {
 | |
|     + onEvent(Event) {abstract}
 | |
|   }
 | |
|   class KingJoffrey {
 | |
|     - LOGGER : Logger {static}
 | |
|     + KingJoffrey()
 | |
|     + onEvent(e : Event)
 | |
|   }
 | |
|   class KingsHand {
 | |
|     + KingsHand()
 | |
|     + KingsHand(obs : EventObserver)
 | |
|     + onEvent(e : Event)
 | |
|     + timePasses(day : Weekday)
 | |
|   }
 | |
|   class LordBaelish {
 | |
|     + LordBaelish()
 | |
|     + LordBaelish(obs : EventObserver)
 | |
|     + timePasses(day : Weekday)
 | |
|   }
 | |
|   class LordVarys {
 | |
|     + LordVarys()
 | |
|     + LordVarys(obs : EventObserver)
 | |
|     + timePasses(day : Weekday)
 | |
|   }
 | |
|   class Scout {
 | |
|     + Scout()
 | |
|     + Scout(obs : EventObserver)
 | |
|     + timePasses(day : Weekday)
 | |
|   }
 | |
|   enum Weekday {
 | |
|     + FRIDAY {static}
 | |
|     + MONDAY {static}
 | |
|     + SATURDAY {static}
 | |
|     + SUNDAY {static}
 | |
|     + THURSDAY {static}
 | |
|     + TUESDAY {static}
 | |
|     + WEDNESDAY {static}
 | |
|     - description : String
 | |
|     + toString() : String
 | |
|     + valueOf(name : String) : Weekday {static}
 | |
|     + values() : Weekday[] {static}
 | |
|   }
 | |
| }
 | |
| EventEmitter -->  "-observers" EventObserver
 | |
| KingJoffrey ..|> EventObserver 
 | |
| KingsHand ..|> EventObserver 
 | |
| KingsHand --|> EventEmitter 
 | |
| LordBaelish --|> EventEmitter 
 | |
| LordVarys --|> EventEmitter 
 | |
| Scout --|> EventEmitter 
 | |
| @enduml |