设计模式实验八
软件设计 石家庄铁道大学信息学院
实验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.注意编程规范。