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