实验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()

 

3.注意编程规范。