java-design-patterns/step-builder/etc/step-builder.urm.puml
2019-12-07 18:03:49 +02:00

91 lines
2.6 KiB
Plaintext

@startuml
package com.iluwatar.stepbuilder {
class App {
- LOGGER : Logger {static}
+ App()
+ main(args : String[]) {static}
}
class Character {
- abilities : List<String>
- fighterClass : String
- name : String
- spell : String
- weapon : String
- wizardClass : String
+ Character(name : String)
+ getAbilities() : List<String>
+ getFighterClass() : String
+ getName() : String
+ getSpell() : String
+ getWeapon() : String
+ getWizardClass() : String
+ setAbilities(abilities : List<String>)
+ setFighterClass(fighterClass : String)
+ setName(name : String)
+ setSpell(spell : String)
+ setWeapon(weapon : String)
+ setWizardClass(wizardClass : String)
+ toString() : String
}
class CharacterStepBuilder {
- CharacterStepBuilder()
+ newBuilder() : NameStep {static}
}
interface AbilityStep {
+ noAbilities() : BuildStep {abstract}
+ noMoreAbilities() : BuildStep {abstract}
+ withAbility(String) : AbilityStep {abstract}
}
interface BuildStep {
+ build() : Character {abstract}
}
-class CharacterSteps {
- abilities : List<String>
- fighterClass : String
- name : String
- spell : String
- weapon : String
- wizardClass : String
- CharacterSteps()
+ build() : Character
+ fighterClass(fighterClass : String) : WeaponStep
+ name(name : String) : ClassStep
+ noAbilities() : BuildStep
+ noMoreAbilities() : BuildStep
+ noSpell() : BuildStep
+ noWeapon() : BuildStep
+ withAbility(ability : String) : AbilityStep
+ withSpell(spell : String) : AbilityStep
+ withWeapon(weapon : String) : AbilityStep
+ wizardClass(wizardClass : String) : SpellStep
}
interface ClassStep {
+ fighterClass(String) : WeaponStep {abstract}
+ wizardClass(String) : SpellStep {abstract}
}
interface NameStep {
+ name(String) : ClassStep {abstract}
}
interface SpellStep {
+ noSpell() : BuildStep {abstract}
+ withSpell(String) : AbilityStep {abstract}
}
interface WeaponStep {
+ noWeapon() : BuildStep {abstract}
+ withWeapon(String) : AbilityStep {abstract}
}
}
WeaponStep ..+ CharacterStepBuilder
AbilityStep ..+ CharacterStepBuilder
ClassStep ..+ CharacterStepBuilder
CharacterSteps ..+ CharacterStepBuilder
SpellStep ..+ CharacterStepBuilder
BuildStep ..+ CharacterStepBuilder
NameStep ..+ CharacterStepBuilder
CharacterSteps ..|> NameStep
CharacterSteps ..|> ClassStep
CharacterSteps ..|> WeaponStep
CharacterSteps ..|> SpellStep
CharacterSteps ..|> AbilityStep
CharacterSteps ..|> BuildStep
@enduml