用python实现一个双向适配器的实例,使得猫可以学狗叫,狗可以学猫抓老鼠,绘制相应类图,并使用代码编程
时间: 2023-06-26 14:03:34 浏览: 129
以下是一个双向适配器的实例,实现了猫可以学狗叫,狗可以学猫抓老鼠的功能。类图如下:
```
+---------------------+
| AnimalAdapter |
+---------------------+
| + dog |
| + cat |
| + learn(sound) |
| + __init__(dog, cat) |
+---------------------+
^ ^
| |
+----------+ +----------+
| Dog | | Cat |
+----------+ +----------+
| + bark() | | + catch()|
+----------+ +----------+
```
其中,AnimalAdapter是双向适配器类,可以接受狗和猫作为参数,并且实现了learn()方法,这个方法可以让猫学习狗叫和狗学习猫抓老鼠。
Dog和Cat是两个具体的动物类,分别实现了bark()方法和catch()方法。
代码如下:
```python
class Dog:
def bark(self):
print("汪汪汪!")
class Cat:
def catch(self):
print("抓老鼠!")
class AnimalAdapter:
def __init__(self, dog, cat):
self.dog = dog
self.cat = cat
def learn(self, sound):
if sound == "bark":
self.cat.catch()
elif sound == "catch":
self.dog.bark()
if __name__ == '__main__':
dog = Dog()
cat = Cat()
adapter1 = AnimalAdapter(dog, cat)
adapter1.learn("bark")
adapter2 = AnimalAdapter(dog, cat)
adapter2.learn("catch")
```
运行结果:
```
抓老鼠!
汪汪汪!
```
可以看到,猫学会了狗叫,狗学会了猫抓老鼠。