@startuml package com.iluwatar.bridge { class App { - LOGGER : Logger {static} + App() + main(args : String[]) {static} } interface Enchantment { + apply() {abstract} + onActivate() {abstract} + onDeactivate() {abstract} } class FlyingEnchantment { - LOGGER : Logger {static} + FlyingEnchantment() + apply() + onActivate() + onDeactivate() } class Hammer { - LOGGER : Logger {static} - enchantment : Enchantment + Hammer(enchantment : Enchantment) + getEnchantment() : Enchantment + swing() + unwield() + wield() } class SoulEatingEnchantment { - LOGGER : Logger {static} + SoulEatingEnchantment() + apply() + onActivate() + onDeactivate() } class Sword { - LOGGER : Logger {static} - enchantment : Enchantment + Sword(enchantment : Enchantment) + getEnchantment() : Enchantment + swing() + unwield() + wield() } interface Weapon { + getEnchantment() : Enchantment {abstract} + swing() {abstract} + unwield() {abstract} + wield() {abstract} } } Sword --> "-enchantment" Enchantment Hammer --> "-enchantment" Enchantment FlyingEnchantment ..|> Enchantment Hammer ..|> Weapon SoulEatingEnchantment ..|> Enchantment Sword ..|> Weapon @enduml