适配器模式
实验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(); } }
运行效果