Паттерн для мониторинга изменения состояния объекта, есть ли? Ребят нужен паттерн реализовав который можно получить объект который мониторит изменение своего состояния. К примеру есть класс Person и я хочу что бы когда у этого класса все поля заполнены он автоматически вызывал метод к примеру send() Возможно ли это?
Да, такой паттерн называется 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.
Надеюсь, это поможет вам реализовать необходимую функциональность.
Да, такой паттерн называется 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.
Надеюсь, это поможет вам реализовать необходимую функциональность.