模式定义
将一个类的接口,转换成客户期望的另一个接口。适配器模式让原本接口不兼容的类可以合作无间。
类图
示例
/**
* 鸭子接口
*
* @author Colin
* @create 2018-05-07
**/
public interface Duck {
public void quack();
public void fly();
}
/**
* 鸡
*
* @author Colin
* @create 2018-05-07
**/
public interface Chicken {
public void Gege();
public void fly();
}
**
* 适配器
*
* @author Colin
* @create 2018-05-07
**/
public class ChickenAdapter implements Duck {
private Chicken chicken;
public ChickenAdapter(Chicken chicken){
this.chicken=chicken;
}
@Override
public void quack() {
chicken.Gege();
}
@Override
public void fly() {
chicken.fly();
}
}
/**
* 绿鸭子
*
* @author Colin
* @create 2018-05-07
**/
public class GreenDuck implements Duck {
@Override
public void quack() {
System.out.println("呱呱叫!");
}
@Override
public void fly() {
System.out.println("飞起来!");
}
}
/**
* 母鸡
*
* @author Colin
* @create 2018-05-07
**/
public class HenChicken implements Chicken {
@Override
public void Gege() {
System.out.println("母鸡咯咯叫!");
}
@Override
public void fly() {
System.out.println("母鸡会飞!");
}
}
public class AdapterTest {
@Test
public void testAdapter(){
GreenDuck greenDuck=new GreenDuck();
HenChicken chicken=new HenChicken();
Duck duck=new ChickenAdapter(chicken);
duck.quack();
duck.fly();
}
}
总结
- 当需要使用一个现有的类,接口并不符合你的需求时,就使用适配器模式
- 适配器改变接口以符合客户的期望