@startuml package com.iluwatar.lazy.loading { ~class HeavyFactory { - heavyInstance : Heavy ~ HeavyFactory() + get() : Heavy } class App { + App() + main(args : String[]) {static} } class HolderThreadSafe { - heavy : Heavy + HolderThreadSafe() + getHeavy() : Heavy } class Heavy { + Heavy() } class HolderNaive { - heavy : Heavy + HolderNaive() + getHeavy() : Heavy } class Java8Holder { - heavy : Supplier + Java8Holder() - createAndCacheHeavy() : Heavy + getHeavy() : Heavy } } HolderNaive --> "-heavy" Heavy HolderThreadSafe --> "-heavy" Heavy HeavyFactory --> "-heavyInstance" Heavy @enduml