python观察者模式举例
时间: 2023-10-13 10:23:13 浏览: 80
观察者模式是一种设计模式,其中一个对象(称为主题)维护其依赖项(称为观察者),并在其状态发生变化时通知它们。下面是一个使用Python实现观察者模式的简单示例:
```python
class Subject:
def __init__(self):
self._observers = []
def attach(self, observer):
if observer not in self._observers:
self._observers.append(observer)
def detach(self, observer):
try:
self._observers.remove(observer)
except ValueError:
pass
def notify(self, modifier=None):
for observer in self._observers:
if modifier != observer:
observer.update(self)
class Data(Subject):
def __init__(self, name=''):
Subject.__init__(self)
self.name = name
self._data = 0
@property
def data(self):
return self._data
@data.setter
def data(self, value):
self._data = value
self.notify()
class Observer:
def __init__(self, name):
self.name = name
def update(self, subject):
print(f'{self.name} has been notified with data {subject.data}')
# 创建主题和观察者
data = Data('Data 1')
observer1 = Observer('Observer 1')
observer2 = Observer('Observer 2')
# 将观察者附加到主题上
data.attach(observer1)
data.attach(observer2)
# 更新数据并通知观察者
data.data = 1
```
在上面的例子中,主题类`Subject`维护一个观察者列表,并提供了`attach`,`detach`和`notify`方法来添加、删除和通知观察者。`Data`类是主题的具体实现,每当其数据属性发生变化时,它会调用`notify`方法来通知其观察者。`Observer`类是观察者的抽象,每当主题通知其时,它会调用`update`方法来处理通知。
阅读全文