60 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			60 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | @startuml | ||
|  | package com.iluwatar.visitor { | ||
|  |   class App { | ||
|  |     + App() | ||
|  |     + main(args : String[]) {static} | ||
|  |   } | ||
|  |   class Commander { | ||
|  |     + Commander(children : Unit[]) | ||
|  |     + accept(visitor : UnitVisitor) | ||
|  |     + toString() : String | ||
|  |   } | ||
|  |   class CommanderVisitor { | ||
|  |     - LOGGER : Logger {static} | ||
|  |     + CommanderVisitor() | ||
|  |     + visitCommander(commander : Commander) | ||
|  |     + visitSergeant(sergeant : Sergeant) | ||
|  |     + visitSoldier(soldier : Soldier) | ||
|  |   } | ||
|  |   class Sergeant { | ||
|  |     + Sergeant(children : Unit[]) | ||
|  |     + accept(visitor : UnitVisitor) | ||
|  |     + toString() : String | ||
|  |   } | ||
|  |   class SergeantVisitor { | ||
|  |     - LOGGER : Logger {static} | ||
|  |     + SergeantVisitor() | ||
|  |     + visitCommander(commander : Commander) | ||
|  |     + visitSergeant(sergeant : Sergeant) | ||
|  |     + visitSoldier(soldier : Soldier) | ||
|  |   } | ||
|  |   class Soldier { | ||
|  |     + Soldier(children : Unit[]) | ||
|  |     + accept(visitor : UnitVisitor) | ||
|  |     + toString() : String | ||
|  |   } | ||
|  |   class SoldierVisitor { | ||
|  |     - LOGGER : Logger {static} | ||
|  |     + SoldierVisitor() | ||
|  |     + visitCommander(commander : Commander) | ||
|  |     + visitSergeant(sergeant : Sergeant) | ||
|  |     + visitSoldier(soldier : Soldier) | ||
|  |   } | ||
|  |   abstract class Unit { | ||
|  |     - children : Unit[] | ||
|  |     + Unit(children : Unit[]) | ||
|  |     + accept(visitor : UnitVisitor) | ||
|  |   } | ||
|  |   interface UnitVisitor { | ||
|  |     + visitCommander(Commander) {abstract} | ||
|  |     + visitSergeant(Sergeant) {abstract} | ||
|  |     + visitSoldier(Soldier) {abstract} | ||
|  |   } | ||
|  | } | ||
|  | Commander --|> Unit  | ||
|  | CommanderVisitor ..|> UnitVisitor  | ||
|  | Sergeant --|> Unit  | ||
|  | SergeantVisitor ..|> UnitVisitor  | ||
|  | Soldier --|> Unit  | ||
|  | SoldierVisitor ..|> UnitVisitor  | ||
|  | @enduml |