@startuml package com.iluwatar.proxy { class App { + App() + main(args : String[]) {static} } class IvoryTower { - LOGGER : Logger {static} + IvoryTower() + enter(wizard : Wizard) } class Wizard { - name : String + Wizard(name : String) + toString() : String } interface WizardTower { + enter(Wizard) {abstract} } class WizardTowerProxy { - LOGGER : Logger {static} - NUM_WIZARDS_ALLOWED : int {static} - numWizards : int - tower : WizardTower + WizardTowerProxy(tower : WizardTower) + enter(wizard : Wizard) } } WizardTowerProxy --> "-tower" WizardTower IvoryTower ..|> WizardTower WizardTowerProxy ..|> WizardTower @enduml