java-design-patterns/strategy/etc/strategy.urm.puml

53 lines
1.3 KiB
Plaintext
Raw Normal View History

2019-12-07 18:03:49 +02:00
@startuml
package com.iluwatar.strategy {
class App {
- LOGGER : Logger {static}
+ App()
+ main(args : String[]) {static}
}
class DragonSlayer {
- strategy : DragonSlayingStrategy
+ DragonSlayer(strategy : DragonSlayingStrategy)
+ changeStrategy(strategy : DragonSlayingStrategy)
+ goToBattle()
}
interface DragonSlayingStrategy {
+ execute() {abstract}
}
class LambdaStrategy {
- LOGGER : Logger {static}
+ LambdaStrategy()
}
enum Strategy {
+ MeleeStrategy {static}
+ ProjectileStrategy {static}
+ SpellStrategy {static}
- dragonSlayingStrategy : DragonSlayingStrategy
+ execute()
+ valueOf(name : String) : Strategy {static}
+ values() : Strategy[] {static}
}
2019-12-07 18:03:49 +02:00
class MeleeStrategy {
- LOGGER : Logger {static}
+ MeleeStrategy()
+ execute()
}
class ProjectileStrategy {
- LOGGER : Logger {static}
+ ProjectileStrategy()
+ execute()
}
class SpellStrategy {
- LOGGER : Logger {static}
+ SpellStrategy()
+ execute()
}
}
Strategy ..+ LambdaStrategy
Strategy --> "-dragonSlayingStrategy" DragonSlayingStrategy
2019-12-07 18:03:49 +02:00
DragonSlayer --> "-strategy" DragonSlayingStrategy
Strategy ..|> DragonSlayingStrategy
2019-12-07 18:03:49 +02:00
MeleeStrategy ..|> DragonSlayingStrategy
ProjectileStrategy ..|> DragonSlayingStrategy
SpellStrategy ..|> DragonSlayingStrategy
@enduml