ДБ
Size: a a a
ДБ
ДБ
g
save
есть логгирование. Но вызов Logger.log
автоматически добавляет констрейнты HasLogger
и HasConfig
.g
Env
заворачивать.ДБ
PD
AH
PD
AH
PD
g
PD
logField
) требует реализацию сразу двух интерфейсов — вот тебе и композицияPD
Log.info
, Config.getField
) , и всё, ты уже используешь не интерфейсы, а снова сртпPD
g
PD
Logger.log
, Storage.save
)