Design: Observer Pattern for UI Updates
Design focuses on the pattern and architecture for UI updates using observer pattern. Does not cover backend data storage or network communication.
Functional Requirements
Non-Functional Requirements
Jump into concepts and practice - no test required
+----------------+
| Subject |
| (Data Source) |
+--------+-------+
|
notify() | updates
v
+--------+-------+ subscribe() / unsubscribe()
| Observer |<------------------------------+
| (UI Component) | |
+----------------+ |
^ |
| |
+--------+-------+ |
| Observer List |-------------------------------+Observer pattern in UI updates?addObserver to register an observer, matching subject.addObserver(observer).subject.notifyObservers() is called?class Subject:
def __init__(self):
self.observers = []
def addObserver(self, obs):
self.observers.append(obs)
def notifyObservers(self):
for obs in self.observers:
obs.update('Data changed')
class Observer:
def update(self, message):
print(f'Observer received: {message}')
subject = Subject()
obs1 = Observer()
obs2 = Observer()
subject.addObserver(obs1)
subject.addObserver(obs2)
subject.notifyObservers()class Subject:
def __init__(self):
self.observers = set()
def addObserver(self, obs):
self.observers.add(obs)
def notifyObservers(self):
for obs in self.observers:
obs.update('Update')
class Observer:
def update(self, message):
print(message)
subject = Subject()
obs = Observer()
subject.addObserver(obs)
subject.addObserver(obs)
subject.notifyObservers()