16.1k views
4 votes
The source codes are given in the Powerpoint presentation. Add 2 more Observer objects.

public interface ISubject ( } void subscribe (IObserver observer); void unSubscribe (IObserver observer); void notifySubscribers (); public interface IObserver { void update(); } } ( } import

User Torxed
by
8.6k points

1 Answer

2 votes

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")

User Pradep
by
8.4k points