用观察者模式实现猫大叫老鼠淘宝,主人被惊醒
时间: 2024-02-18 18:05:53 浏览: 94
观察者模式的实现
好的,这是一个经典的观察者模式的例子。
首先,我们需要定义三个类:猫(Cat)、老鼠(Mouse)和主人(Owner)。
猫(Cat)类有一个叫(yell)的方法,在这个方法中,我们通知所有的观察者(老鼠和主人)这只猫正在大叫。
老鼠(Mouse)和主人(Owner)类都有一个更新(update)方法,用于接收到猫叫的通知后做出相应的行动。
观察者模式的实现过程如下:
```python
# 猫类
class Cat:
def __init__(self):
self.observers = []
# 添加观察者
def attach(self, observer):
self.observers.append(observer)
# 通知所有观察者
def notify(self):
for observer in self.observers:
observer.update()
# 猫叫
def yell(self):
print("猫大叫!")
self.notify()
# 老鼠类
class Mouse:
def __init__(self, name):
self.name = name
# 更新方法
def update(self):
print("老鼠{}听到猫叫,赶紧逃跑!".format(self.name))
# 主人类
class Owner:
def __init__(self, name):
self.name = name
# 更新方法
def update(self):
print("主人{}听到猫叫,被惊醒了!".format(self.name))
# 测试代码
if __name__ == '__main__':
# 创建猫、老鼠和主人对象
cat = Cat()
mouse1 = Mouse("Tom")
mouse2 = Mouse("Jerry")
owner = Owner("Jack")
# 添加观察者
cat.attach(mouse1)
cat.attach(mouse2)
cat.attach(owner)
# 猫叫,观察者做出相应的行动
cat.yell()
```
运行上述代码,输出结果如下:
```
猫大叫!
老鼠Tom听到猫叫,赶紧逃跑!
老鼠Jerry听到猫叫,赶紧逃跑!
主人Jack听到猫叫,被惊醒了!
```
可以看到,猫叫后,所有的观察者都做出了相应的行动。老鼠逃跑,主人被惊醒了。这就是观察者模式的作用。
阅读全文