适配器模式
分为对象适配和类适配,由于java不支持多继承,所以只有对象适配。
适配就是将不合适的接口通过适配变得合适,使用的是组合的关系。
在下面:MenRobot和DogRobot就是适配器。
一个机器人接口
会叫和移动
public interface Robot {
public void sound();
public void move();
}
希望它像人一样说话和走路
MenRobot
public class Men {
public void speak() {
System.out.println("人在说话...");
}
public void walk() {
System.out.println("人在走路...");
}
}
下面是适配器:
public class MenRobot implements Robot {
Men men;
public MenRobot(Men m) {
this.men = m;
}
@Override
public void sound() {
men.speak();
}
@Override
public void move() {
men.walk();
}
}
客户端如何使用:
public static void main(String[] args) {
Men m = new Men();
Robot r = new MenRobot(m);
r.sound();
r.move();
}
现在希望它像狗一样叫,我们已经有狗了。
DogRobot
public class Dog {
public void bark() {
System.out.println("狗在汪汪叫...");
}
public void run() {
System.out.println("狗在跑步...");
}
}
下面是适配器:
public class DogRobot implements Robot {
Dog d;
public DogRobot(Dog d) {
this.d = d;
}
@Override
public void sound() {
d.bark();
}
@Override
public void move() {
d.run();
}
}
使用:
r = new DogRobot(new Dog());
r.sound();
r.move();
结果:
人在说话...
人在走路...
狗在汪汪叫...
狗在跑步...