适配器模式(Adapter Pattern)属于结构型模式,他用于将一个类的接口转换成用户希望的另外一个接口。 在适配器模式中,我们可以定义一个包装类,包装不兼容接口的对象。
demo:
机器人生产厂家想生产一个新产品,可以模仿狗叫,狗跑的机器人
机器人接口:
public interface Robot {
void speak();
void move();
}
目前生产的机器人,代号小明:
public class RobotMing implements Robot{
@Override
public void speak() {
System.out.println("机器小明在说话");
}
@Override
public void move() {
System.out.println("机器小明在移动");
}
}
小狗属性的类:
public class Dog{
public void wang() {
System.out.println("汪汪汪");
}
public void run() {
System.out.println("狗跑跑");
}
}
生产具有小狗属性的机器人的类:
public class RobotDogAdapter implements Robot {
Dog dog;
public RobotDogAdapter(Dog dog) {
this.dog = dog;
}
@Override
public void speak() {
System.out.println("机器人模拟狗叫:");
dog.wang();
}
@Override
public void move() {
System.out.println("机器人模拟狗跑:");
dog.run();
}
}
调用:
// 小明机器人
Robot robotMing = new RobotMing();
robotMing.speak();
robotMing.move();
// 新型小狗机器人
Robot robotDog = new RobotDogAdapter(new Dog());
robotDog.speak();
robotDog.move();
输出结果:
机器小明在说话
机器小明在移动
机器人模拟狗叫:
汪汪汪
机器人模拟狗跑:
狗跑跑