Паттерн для мониторинга изменения состояния объекта, есть ли? Ребят нужен паттерн реализовав который можно получить объект который мониторит изменение своего состояния. К примеру есть класс Person и я хочу что бы когда у этого класса все поля заполнены он автоматически вызывал метод к примеру send()
Возможно ли это?

21 Авг 2019 в 07:01
176 +1
0
Ответы
1

Да, такой паттерн называется Observer (Наблюдатель). В данном случае вы можете создать класс, реализующий этот паттерн, который будет наблюдать за изменением состояния объекта Person.

Пример реализации:

class Person:
def __init__(self):
self.name = None
self.age = None
self.observers = []
def add_observer(self, observer):
self.observers.append(observer)
def set_name(self, name):
self.name = name
self.notify()
def set_age(self, age):
self.age = age
self.notify()
def notify(self):
if self.name is not None and self.age is not None:
for observer in self.observers:
observer.send()
class Observer:
def __init__(self, person):
self.person = person
def send(self):
print("Sending notification...")
# Пример использования
person = Person()
observer = Observer(person)
person.add_observer(observer)
person.set_name("Alice")
person.set_age(25)

В данном примере, объект класса Person может иметь несколько наблюдателей (observers), которые будут уведомлены при изменении состояния объекта. Когда все поля объекта Person заполнены, вызывается метод send() у наблюдателя Observer.

Надеюсь, это поможет вам реализовать необходимую функциональность.

20 Апр 2024 в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 96 424 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир