@startuml package com.iluwatar.decorator { class App { - LOGGER : Logger {static} + App() + main(args : String[]) {static} } class ClubbedTroll { - LOGGER : Logger {static} + ClubbedTroll(decorated : Troll) + attack() + getAttackPower() : int } class SimpleTroll { - LOGGER : Logger {static} + SimpleTroll() + attack() + fleeBattle() + getAttackPower() : int } interface Troll { + attack() {abstract} + fleeBattle() {abstract} + getAttackPower() : int {abstract} } class TrollDecorator { - decorated : Troll + TrollDecorator(decorated : Troll) + attack() + fleeBattle() + getAttackPower() : int } } TrollDecorator --> "-decorated" Troll ClubbedTroll --|> TrollDecorator SimpleTroll ..|> Troll TrollDecorator ..|> Troll @enduml