@startuml package com.iluwatar.factorykit { class App { - LOGGER : Logger {static} + App() + main(args : String[]) {static} } class Axe { + Axe() + toString() : String } class Bow { + Bow() + toString() : String } interface Builder { + add(WeaponType, Supplier) {abstract} } class Spear { + Spear() + toString() : String } class Sword { + Sword() + toString() : String } interface Weapon { } interface WeaponFactory { + create(WeaponType) : Weapon {abstract} + factory(consumer : Consumer) : WeaponFactory {static} } enum WeaponType { + AXE {static} + BOW {static} + SPEAR {static} + SWORD {static} + valueOf(name : String) : WeaponType {static} + values() : WeaponType[] {static} } } Axe ..|> Weapon Bow ..|> Weapon Spear ..|> Weapon Sword ..|> Weapon @enduml