11.4

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

 

实验8:适配器模式

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

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

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

 

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

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

实验要求:

1. 画出对应的类图;

 

2. 提交源代码;

public class Adapter implements Dog, Cat

{

    private Dog dog;

    private Cat cat;

 

    public Dog getDog()

    {

        return dog;

    }

 

    public void setDog(Dog dog)

    {

        this.dog = dog;

    }

 

    public Cat getCat()

    {

        return cat;

    }

 

    public void setCat(Cat cat)

    {

        this.cat = cat;

    }

 

    @Override

    public void miao()

    {

        System.out.print("猫学");

        dog.wang();

    }

 

    @Override

    public void catchMouse()

    {

        cat.catchMouse();

    }

 

    @Override

    public void wang()

    {

        dog.wang();

    }

 

    @Override

    public void act()

    {

        System.out.print("狗学");

        cat.catchMouse();

    }

}

 

public interface Cat

{

    //猫叫

    public void miao();

    //猫捉老鼠

    public void catchMouse();

}

 

public class CatImpl implements Cat

{

    @Override

    public void miao()

    {

        System.out.println("猫叫:喵喵喵");

    }

 

    @Override

    public void catchMouse()

    {

        System.out.println("猫捉老鼠");

    }

}

 

public interface Dog

{

    //狗叫

    public void wang();

    //狗捉鸡

    public void act();

}

 

 

public class DogImpl implements Dog

{

    @Override

    public void act()

    {

        System.out.println("狗捉鸡");

    }

 

    @Override

    public void wang()

    {

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

    }

}

 

public class Client

{

    public static void main(String[] args)

    {

        //实例化猫和狗

        Cat cat = new CatImpl();

        Dog dog = new DogImpl();

        //猫叫

        cat.miao();

        //狗捉鸡

        dog.act();

        //实例化双向适配器

        Adapter adapter = new Adapter();

        //将狗对象设置到适配器中

        adapter.setDog(dog);

        //将猫对象设置到适配器中

        adapter.setCat(cat);

        //将适配器对象赋值给猫,实现猫对象学习狗的行为

        cat = adapter;

        //猫学狗叫

        cat.miao();

        //将适配器对象赋值给狗,实现狗对象学习猫的行为

        dog = adapter;

        // 狗学猫捉老鼠

        dog.act();

    }

}

3.注意编程规范。

posted @ 2024-11-04 23:02  混沌武士丞  阅读(9)  评论(0)    收藏  举报