10.9

实验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.注意编程规范。

posted @ 2024-11-27 08:17  The-rich  阅读(25)  评论(0)    收藏  举报