91 lines
2.6 KiB
Plaintext
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 |