实验8:适配器模式
本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:
1、理解适配器模式的动机,掌握该模式的结构;
2、能够利用适配器模式解决实际问题。
[实验任务一]:双向适配器
实现一个双向适配器,使得猫可以学狗叫,狗可以学猫抓老鼠。
实验要求:
1. 画出对应的类图;

2. 提交源代码;
class Cat:
def meow(self):
return "喵"
def catch_mouse(self):
return "猫抓到老鼠了"
class Dog:
def bark(self):
return "汪"
def fetch(self):
return "狗把球带回来了"
class CatToDogAdapter:
def __init__(self, cat):
self.cat = cat
def bark(self):
return self.cat.meow() # 猫的'叫声'模拟成狗的'叫声'
def fetch(self):
return "狗无法抓老鼠,但猫抓到了老鼠。" # 狗不能抓老鼠
class DogToCatAdapter:
def __init__(self, dog):
self.dog = dog
def meow(self):
return self.dog.bark() # 狗的'叫声'模拟成猫的'叫声'
def catch_mouse(self):
return "猫无法抓老鼠,但狗试图抓老鼠。" # 猫不能抓老鼠
# 实际使用
def main():
# 创建猫和狗的实例
my_cat = Cat()
my_dog = Dog()
# 创建适配器
cat_as_dog = CatToDogAdapter(my_cat)
dog_as_cat = DogToCatAdapter(my_dog)
# 猫叫成狗叫
print("猫叫成狗叫:", cat_as_dog.bark())
# 狗尝试抓老鼠
print("狗尝试抓老鼠:", cat_as_dog.fetch())
# 狗叫成猫叫
print("狗叫成猫叫:", dog_as_cat.meow())
# 猫尝试抓老鼠
print("猫尝试抓老鼠:", dog_as_cat.catch_mouse())
if __name__ == "__main__":
main()
浙公网安备 33010602011771号