@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