通知观察者是一种设计模式,用于实现对象间的松耦合通信。在这种模式中,一个或多个观察者对象订阅另一个对象(称为主题或被观察者)的状态变化。当主题的状态发生变化时,它会通知所有已注册的观察者,从而触发相应的操作。
阅读通知观察者的关键在于理解其工作原理和实现细节。以下是一个简单的示例代码,展示了如何实现一个基本的通知观察者模式:
class Subject:
def __init__(self):
self._observers = []
self._state = None
def add_observer(self, observer):
if observer not in self._observers:
self._observers.append(observer)
def remove_observer(self, observer):
self._observers.remove(observer)
def notify_observers(self):
for observer in self._observers:
observer.update(self._state)
def set_state(self, state):
self._state = state
self.notify_observers()
class Observer:
def update(self, state):
raise NotImplementedError
class ConcreteObserver(Observer):
def __init__(self, name):
self.name = name
def update(self, state):
print(f"{self.name} received new state: {state}")
# 示例使用
subject = Subject()
observer1 = ConcreteObserver("Observer 1")
observer2 = ConcreteObserver("Observer 2")
subject.add_observer(observer1)
subject.add_observer(observer2)
subject.set_state("State 1")
subject.set_state("State 2")
subject.remove_observer(observer1)
subject.set_state("State 3")
通过上述代码和参考链接,你可以更好地理解通知观察者的工作原理和应用场景。如果你在实际应用中遇到问题,可以参考这些资源来解决问题。
领取专属 10元无门槛券
手把手带您无忧上云