L
CoffeeMachine
в нем класс Storage
для хранения ингредиентов, в Storage
создать классы для каждого из компонентов типа Water
, Bean
и так далее. Для компонентов можно создать интерфейс Component
в котором будет метод check()
Тогда при варке эспрессо ты можешь передавать List<Component> и в цикле вызывать для каждого
check()
проверяя доступность материалов