适配器模式:将一个类的接口,转换为客户期望的另一个类的接口。适配器让原本接口不兼容的类可以合作无间。
1. 鸭子、火鸡接口
public interface Duck {
void quack();
void fly();
}
public interface Turkey {
void gobble();
void fly();
}
2. 火鸡实现器
public class WildTurkey implements Turkey {
@Override
public void gobble() {
System.out.println("Gobble gobble");
}
@Override
public void fly() {
System.out.println("I am flying a short distance");
}
}
3. 火鸡适配器
public class TurkeyAdapter implements Duck {
private Turkey turkey;
public TurkeyAdapter(Turkey turkey) {
this.turkey = turkey;
}
@Override
public void quack() {
turkey.gobble();
}
@Override
public void fly() {
for (int i = 0; i < 5; i++) {
turkey.fly();
}
}
}
4. 测试
public class AdpterTest {
@Test
public void testDuckAdapter() {
Turkey wildTurkey = new WildTurkey();
Duck turkeyAdapter = new TurkeyAdapter(wildTurkey);
turkeyAdapter.quack();
turkeyAdapter.fly();
}
}
5. 输出
Gobble gobble
I am flying a short distance
I am flying a short distance
I am flying a short distance
I am flying a short distance
I am flying a short distance
再如旧世界的Enumeration与新世界的Iterator进行适配