观察者模式的应用场景有什么?用python代码写一个解决现实场景问题的代码
时间: 2024-02-13 09:02:15 浏览: 28
观察者模式的应用场景很多,以下是一些常见的应用场景:
1. GUI界面中的事件监听器
2. 消息通知系统
3. 股票行情的订阅和推送
4. 游戏中的人物状态监控
下面以一个简单的股票行情订阅和推送系统为例,展示观察者模式的应用。假设我们有两个股民,他们都对某只股票的涨跌情况感兴趣,我们可以使用观察者模式来实现股票行情的订阅和推送。
```python
class Stock:
def __init__(self, name, price):
self._name = name
self._price = price
self._observers = []
def get_price(self):
return self._price
def set_price(self, price):
self._price = price
self.notify()
def attach(self, observer):
self._observers.append(observer)
def detach(self, observer):
self._observers.remove(observer)
def notify(self):
for observer in self._observers:
observer.update(self)
class Investor:
def __init__(self, name):
self._name = name
def update(self, stock):
print(f"{self._name} receive new price: {stock.get_price()}")
if __name__ == '__main__':
stock = Stock("Google", 100)
investor1 = Investor("Mike")
investor2 = Investor("Tom")
stock.attach(investor1)
stock.attach(investor2)
stock.set_price(110)
```
以上代码展示了股票行情订阅和推送的示例,其中`Stock`类是主题类,`Investor`类是具体观察者类。股民可以通过调用`attach()`方法订阅股票行情,通过调用`detach()`方法取消订阅,当股票行情发生变化时,主题会调用`notify()`方法通知所有观察者。运行以上代码,可以看到在股票价格发生变化时,所有订阅了该股票的股民都会收到价格变化的通知。