Вот что ответил Гугл Бард:Чтобы избежать таких неприятных ситуаций, как двойное наполнение и двойное опустошение кофейного автомата с одним резервуаром, можно использовать следующий паттерн:**Шаг 1.** Добавьте флаг, который будет указывать на то, что резервуар заполнен.```pythonclass CoffeeMachine:    def __init__(self):        self.is_full = False    def fill(self):        self.is_full = True    def empty(self):        self.is_full = False```**Шаг 2.** Перед началом любых операций с резервуаром проверяйте флаг на заполненность.```pythondef make_coffee(coffee_machine):    if not coffee_machine.is_full:        coffee_machine.fill()    # ...    coffee_machine.empty()```Этот паттерн будет гарантировать, что резервуар будет заполнен только один раз, а опустошен только один раз.Более подробно этот паттерн можно реализовать следующим образом:```pythonclass CoffeeMachine:    def __init__(self):        self.is_full = False        self.water_level = 0    def fill(self, water_amount):        if self.is_full:            return        self.water_level += water_amount        if self.water_level >= 100:            self.is_full = True    def empty(self):        if not self.is_full:            return        self.water_level = 0        self.is_full = False    def make_coffee(self):        if not self.is_full:            self.fill(100)        # ...        self.empty()```В этом реализации добавлен дополнительный флаг, который указывает на уровень воды в резервуаре. Это позволяет избежать ситуации, когда резервуар может быть заполнен, но при этом не будет достаточно воды для приготовления кофе.Также добавлена проверка на то, что резервуар не может быть заполнен более чем на 100%.Этот паттерн можно использовать не только для кофейных автоматов, но и для любых других устройств, которые имеют резервуар для жидкости.