@startuml
package com.iluwatar.delegation.simple.printers {
  class CanonPrinter {
    - LOGGER : Logger {static}
    + CanonPrinter()
    + print(message : String)
  }
  class EpsonPrinter {
    - LOGGER : Logger {static}
    + EpsonPrinter()
    + print(message : String)
  }
  class HpPrinter {
    - LOGGER : Logger {static}
    + HpPrinter()
    + print(message : String)
  }
}
package com.iluwatar.delegation.simple {
  class App {
    + MESSAGE_TO_PRINT : String {static}
    + App()
    + main(args : String[]) {static}
  }
  interface Printer {
    + print(String) {abstract}
  }
  class PrinterController {
    - printer : Printer
    + PrinterController(printer : Printer)
    + print(message : String)
  }
}
PrinterController -->  "-printer" Printer
PrinterController ..|> Printer 
CanonPrinter ..|> Printer 
EpsonPrinter ..|> Printer 
HpPrinter ..|> Printer 
@enduml