@startuml package com.iluwatar.module { class App { + consoleLoggerModule : ConsoleLoggerModule {static} + fileLoggerModule : FileLoggerModule {static} + App() + execute(args : String[]) {static} + main(args : String[]) {static} + prepare() {static} + unprepare() {static} } class ConsoleLoggerModule { - LOGGER : Logger {static} + error : PrintStream + output : PrintStream - singleton : ConsoleLoggerModule {static} - ConsoleLoggerModule() + getSingleton() : ConsoleLoggerModule {static} + prepare() : ConsoleLoggerModule + printErrorString(value : String) + printString(value : String) + unprepare() } class FileLoggerModule { - ERROR_FILE : String {static} - LOGGER : Logger {static} - OUTPUT_FILE : String {static} + error : PrintStream + output : PrintStream - singleton : FileLoggerModule {static} - FileLoggerModule() + getSingleton() : FileLoggerModule {static} + prepare() : FileLoggerModule + printErrorString(value : String) + printString(value : String) + unprepare() } } FileLoggerModule --> "-singleton" FileLoggerModule App --> "-consoleLoggerModule" ConsoleLoggerModule ConsoleLoggerModule --> "-singleton" ConsoleLoggerModule App --> "-fileLoggerModule" FileLoggerModule @enduml