The output of the code:
Observer 69109181357008 received update: State 1
Observer 69109439815248 received update: State 1
Observer 75803509635288 received update: State 1 # Output of new observer
Observer 45770860058528 received update: State 1 # Output of new observer
Observer 69109181357008 received update: State 2
Observer 69109439815248 received update: State 2
Observer 75803509635288 received update: State 2 # Output of new observer
Observer 45770860058528 received update: State 2 # Output of new observer
What is the source codes?
The code with 2 more Observer objects:
Python
class Subject:
def __init__(self):
self.observers = []
def subscribe(self, observer):
if observer not
in self.observers:
self.observers.append(observer)
def
unSubscribe(self, observer):
self.observers.remove(observer)
def
notifySubscribers(self):
for observer in self.observers:
observer.update()
class Observer:
def update(self):
pass
class ConcreteSubject(Subject):
def __init__(self):
super().__init__()
self.state = None
def
getState(self):
return self.state
def
setState(self, state):
self.state = state
self.notifySubscribers()
class
ConcreteObserver(Observer):
def
__init__(self, subject):
self.subject = subject
self.subject.subscribe(self)
def update(self):
print(f"Observer {id(self)} received update: {self.subject.getState()}")
if __name__ == "__main__":
subject = ConcreteSubject()
observer1 = ConcreteObserver(subject)
observer2 = ConcreteObserver(subject)
observer3 = ConcreteObserver(subject) # Add new observer
observer4 = ConcreteObserver(subject) # Add new observer
subject.setState("State 1")
subject.setState("State 2")