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
|