11.11

今天完成了高飞老师的实验81.
+----------------+ +----------------------+ +----------------+
| ICat | | CatDogAdapter | | IDog |
+----------------+ +----------------------+ +----------------+
| + catchMouse() |<------| - cat: ICat |------>| + bark() |
+----------------+ | - dog: IDog | +----------------+
^ | + catchMouse() | ^
| | + bark() | |
| +----------------------+ |
| |
+----------------+ +----------------+
| Cat | | Dog |
+----------------+ +----------------+
| + catchMouse() | | + bark() |
+----------------+ +----------------+
2.IDog.java
public interface IDog {
void bark();
}
具体实现类
Cat.java
public class Cat implements ICat {
@Override
public void catchMouse() {
System.out.println("猫抓老鼠:喵~ 抓到老鼠啦!");
}
}
Dog.java
public class Dog implements IDog {
@Override
public void bark() {
System.out.println("狗叫:汪汪汪!");
}
}
3. 双向适配器类
CatDogAdapter.java
public class CatDogAdapter implements ICat, IDog {
private ICat cat;
private IDog dog;

// 适配猫
public CatDogAdapter(ICat cat) {
    this.cat = cat;
}

// 适配狗
public CatDogAdapter(IDog dog) {
    this.dog = dog;
}

// 适配狗调用猫的方法
@Override
public void catchMouse() {
    if (dog != null) {
        System.out.print("狗学猫抓老鼠:");
        // 这里可以添加狗模拟猫抓老鼠的具体实现
        System.out.println("狗用爪子刨地模仿猫抓老鼠!");
    } else if (cat != null) {
        cat.catchMouse();
    }
}

// 适配猫调用狗的方法
@Override
public void bark() {
    if (cat != null) {
        System.out.print("猫学狗叫:");
        // 这里可以添加猫模拟狗叫的具体实现
        System.out.println("猫发出低沉的吼声模仿狗叫!");
    } else if (dog != null) {
        dog.bark();
    }
}

}
4. 测试类
AdapterTest.java
public class AdapterTest {
public static void main(String[] args) {
// 创建猫和狗实例
ICat cat = new Cat();
IDog dog = new Dog();

    // 猫适配成狗
    IDog catAdapter = new CatDogAdapter(cat);
    System.out.println("=== 猫学狗叫 ===");
    catAdapter.bark();
    
    // 狗适配成猫
    ICat dogAdapter = new CatDogAdapter(dog);
    System.out.println("\n=== 狗学猫抓老鼠 ===");
    dogAdapter.catchMouse();
    
    // 原始猫行为
    System.out.println("\n=== 原始猫行为 ===");
    cat.catchMouse();
    
    // 原始狗行为
    System.out.println("\n=== 原始狗行为 ===");
    dog.bark();
}

}
3.{{image.png(uploading...)}}

posted @ 2025-11-11 23:28  山蚯  阅读(3)  评论(0)    收藏  举报