56 lines
1.5 KiB
Plaintext
56 lines
1.5 KiB
Plaintext
@startuml
|
|
package com.iluwatar.factory.method {
|
|
class App {
|
|
- LOGGER : Logger {static}
|
|
- blacksmith : Blacksmith
|
|
+ App(blacksmith : Blacksmith)
|
|
+ main(args : String[]) {static}
|
|
- manufactureWeapons()
|
|
}
|
|
interface Blacksmith {
|
|
+ manufactureWeapon(WeaponType) : Weapon {abstract}
|
|
}
|
|
class ElfBlacksmith {
|
|
- ELFARSENAL : Map<WeaponType, ElfWeapon> {static}
|
|
+ ElfBlacksmith()
|
|
+ manufactureWeapon(weaponType : WeaponType) : Weapon
|
|
}
|
|
class ElfWeapon {
|
|
- weaponType : WeaponType
|
|
+ ElfWeapon(weaponType : WeaponType)
|
|
+ getWeaponType() : WeaponType
|
|
+ toString() : String
|
|
}
|
|
class OrcBlacksmith {
|
|
- ORCARSENAL : Map<WeaponType, OrcWeapon> {static}
|
|
+ OrcBlacksmith()
|
|
+ manufactureWeapon(weaponType : WeaponType) : Weapon
|
|
}
|
|
class OrcWeapon {
|
|
- weaponType : WeaponType
|
|
+ OrcWeapon(weaponType : WeaponType)
|
|
+ getWeaponType() : WeaponType
|
|
+ toString() : String
|
|
}
|
|
interface Weapon {
|
|
+ getWeaponType() : WeaponType {abstract}
|
|
}
|
|
enum WeaponType {
|
|
+ AXE {static}
|
|
+ SHORT_SWORD {static}
|
|
+ SPEAR {static}
|
|
+ UNDEFINED {static}
|
|
- title : String
|
|
+ toString() : String
|
|
+ valueOf(name : String) : WeaponType {static}
|
|
+ values() : WeaponType[] {static}
|
|
}
|
|
}
|
|
ElfWeapon --> "-weaponType" WeaponType
|
|
OrcWeapon --> "-weaponType" WeaponType
|
|
App --> "-blacksmith" Blacksmith
|
|
ElfBlacksmith ..|> Blacksmith
|
|
ElfWeapon ..|> Weapon
|
|
OrcBlacksmith ..|> Blacksmith
|
|
OrcWeapon ..|> Weapon
|
|
@enduml |