2024.11.4

设计模式实验八

软件设计                  石家庄铁道大学信息学院

 

实验8:适配器模式

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

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

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

 
   

 

 

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

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

实验要求:

1.  画出对应的类图;

 

 

2.  提交源代码;

// 动物接口,定义行为

interface Animal {

    void sound();  // 发出声音

    void action(); // 执行动作

}

 

// 猫类,具有自己的行为

class Cat implements Animal {

    @Override

    public void sound() {

        System.out.println("喵喵喵");  // 猫的叫声

    }

 

    @Override

    public void action() {

        System.out.println("抓老鼠");  // 猫的行为:抓老鼠

    }

}

 

// 狗类,具有自己的行为

class Dog implements Animal {

    @Override

    public void sound() {

        System.out.println("汪汪汪");  // 狗的叫声

    }

 

    @Override

    public void action() {

        System.out.println("捡球");  // 狗的行为:捡球

    }

}

 

// 适配器接口,定义通用的行为

interface Adapter {

    void makeSound();

    void performAction();

}

 

// 猫适配器,适配猫的行为让它学狗叫

class CatAdapter implements Adapter {

    private final Cat cat;

 

    public CatAdapter(Cat cat) {

        this.cat = cat;

    }

 

    @Override

    public void makeSound() {

        System.out.println("汪汪汪");  // 让猫学狗叫

    }

 

    @Override

    public void performAction() {

        cat.action();  // 猫依然可以抓老鼠

    }

}

 

// 狗适配器,适配狗的行为让它学猫抓老鼠

class DogAdapter implements Adapter {

    private final Dog dog;

 

    public DogAdapter(Dog dog) {

        this.dog = dog;

    }

 

    @Override

    public void makeSound() {

        dog.sound();  // 狗依然叫

    }

 

    @Override

    public void performAction() {

        System.out.println("抓老鼠");  // 让狗学猫抓老鼠

    }

}

 

// 测试

public class Main {

    public static void main(String[] args) {

        Cat cat = new Cat();

        Dog dog = new Dog();

 

        Adapter catAdapter = new CatAdapter(cat);

        Adapter dogAdapter = new DogAdapter(dog);

 

        // 猫学狗叫

        System.out.println("猫学狗叫:");

        catAdapter.makeSound();

        catAdapter.performAction();  // 猫依然抓老鼠

 

        // 狗学猫抓老鼠

        System.out.println("\n狗学猫抓老鼠:");

        dogAdapter.makeSound();

        dogAdapter.performAction();  // 狗学会抓老鼠

    }

}

3.注意编程规范。

posted @ 2024-12-25 10:01  cvjj  阅读(6)  评论(0)    收藏  举报