[实验任务一]:双向适配器
实现一个双向适配器,使得猫可以学狗叫,狗可以学猫抓老鼠。
实验要求:
-
画出对应的类图;
-
提交源代码;
package adapter;
// Cat接口
interface Cat {
void cry();
void catchMouse();
}
// Dog接口
interface Dog {
void wang();
void action();
}
// 具体的猫类
class ConcreteCat implements Cat {
@Override
public void cry() {
System.out.println("猫叫:喵喵喵~");
}
@Override
public void catchMouse() {
System.out.println("猫抓老鼠");
}
}
// 具体的狗类
class ConcreteDog implements Dog {
@Override
public void wang() {
System.out.println("狗叫:汪汪汪!");
}
@Override
public void action() {
System.out.println("狗在追球");
}
}
// 双向适配器
class TwoWayAdapter implements Cat, Dog {
private Cat cat;
private Dog dog;
public void setCat(Cat cat) {
this.cat = cat;
}
public void setDog(Dog dog) {
this.dog = dog;
}
// 实现Cat的方法
@Override
public void cry() {
if (cat != null) {
cat.cry();
} else if (dog != null) {
// 狗学猫叫
System.out.println("狗学猫叫:喵~汪~");
}
}
@Override
public void catchMouse() {
if (cat != null) {
cat.catchMouse();
} else if (dog != null) {
// 狗学猫抓老鼠
System.out.println("狗学猫抓老鼠");
}
}
// 实现Dog的方法
@Override
public void wang() {
if (dog != null) {
dog.wang();
} else if (cat != null) {
// 猫学狗叫
System.out.println("猫学狗叫:汪~喵~");
}
}
@Override
public void action() {
if (dog != null) {
dog.action();
} else if (cat != null) {
// 猫学狗的动作
System.out.println("猫学狗追球");
}
}
}
// 测试类
public class AdapterDemo {
public static void main(String[] args) {
// 创建具体的猫和狗
Cat cat = new ConcreteCat();
Dog dog = new ConcreteDog();
// 创建双向适配器
TwoWayAdapter adapter = new TwoWayAdapter();
// 让猫学狗叫
System.out.println("===猫学狗===");
adapter.setCat(cat);
adapter.wang(); // 猫学狗叫
adapter.action(); // 猫学狗的动作
// 让狗学猫叫
System.out.println("\n===狗学猫===");
adapter.setCat(null); // 清除猫的引用
adapter.setDog(dog);
adapter.cry(); // 狗学猫叫
adapter.catchMouse(); // 狗学抓老鼠
}
}
3.注意编程规范。
标签:11.17,void,System,dog,cat,public,out From: https://www.cnblogs.com/wlxdaydayup/p/18543016