实验8:适配器模式
本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:
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();
}
}