24.11.21

实验8:适配器模式

本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:

1、理解适配器模式的动机,掌握该模式的结构;

2、能够利用适配器模式解决实际问题。

[实验任务一]:双向适配器

实现一个双向适配器,使得猫可以学狗叫,狗可以学猫抓老鼠。

实验要求:

1.画出对应的类图;

2.提交源代码;

3.注意编程规范。

 

  1. 类图

 

 

 

2.代码

// Cat 接口,定义猫的行为

interface Cat {

    void catchMouse();  // 猫抓老鼠的行为

}

 

// Dog 接口,定义狗的行为

interface Dog {

    void bark();        // 狗叫的行为

}

 

// RealCat 类,具体实现 Cat 接口

class RealCat implements Cat {

    @Override

    public void catchMouse() {

        System.out.println("猫在抓老鼠");

    }

}

 

// RealDog 类,具体实现 Dog 接口

class RealDog implements Dog {

    @Override

    public void bark() {

        System.out.println("狗在汪汪叫");

    }

}

 

// 双向适配器类,实现 Cat 和 Dog 接口

class CatDogAdapter implements Cat, Dog {

    private Cat cat;

    private Dog dog;

 

    // 构造方法,允许适配器包含一只猫和一只狗

    public CatDogAdapter(Cat cat) {

        this.cat = cat;

    }

 

    public CatDogAdapter(Dog dog) {

        this.dog = dog;

    }

 

    // Cat 行为:如果有 Cat 实例,则使用它的 catchMouse 方法;否则让狗学抓老鼠

    @Override

    public void catchMouse() {

        if (cat != null) {

            cat.catchMouse();

        } else if (dog != null) {

            System.out.println("狗学着抓老鼠");

        }

    }

 

    // Dog 行为:如果有 Dog 实例,则使用它的 bark 方法;否则让猫学汪汪叫

    @Override

    public void bark() {

        if (dog != null) {

            dog.bark();

        } else if (cat != null) {

            System.out.println("猫学着汪汪叫");

        }

    }

}

 

// 测试类

public class Main {

    public static void main(String[] args) {

        // 创建真实的猫和狗对象

        Cat realCat = new RealCat();

        Dog realDog = new RealDog();

 

        // 创建一个让猫学狗叫的适配器

        Dog catAdapter = new CatDogAdapter(realCat);

        catAdapter.bark();  // 输出:猫学着汪汪叫

 

        // 创建一个让狗学抓老鼠的适配器

        Cat dogAdapter = new CatDogAdapter(realDog);

        dogAdapter.catchMouse();  // 输出:狗学着抓老鼠

    }

}

posted on 2024-11-21 20:11  Daniel350  阅读(25)  评论(0)    收藏  举报