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
							 |