原理:
demo:
/**
* 适配器模式
* @author zs
*
*/
public class AdapterMode {
//测试
public static void main(String[] args) {
Watermelon watermelon = new Watermelon(); //西瓜
//WatermelonBag bag = new WatermelonBag(); //西瓜盒子
WatermelonBag bag = new WatermelonBagAdapter(new TomatoBag()); //面向父类编程//西瓜盒子--适配器{传入西红柿盒子-->(适配)-->传出西瓜盒子}
watermelon.pack(bag); //父类(WatermelonBag)的pack被重写,所以调用子类(WatermelonBagAdapter)的pack
}
}
class Watermelon{ //西瓜
public void pack(WatermelonBag bag){
System.out.println("西瓜:"+bag);
bag.pack();
}
}
class WatermelonBag{ //西瓜盒子
public void pack(){
System.out.println("西瓜包装盒");
}
}
class Tomato{ //西红柿
public void pack(TomatoBag bag){
System.out.println("西红柿:"+bag);
bag.pack();
}
}
class TomatoBag{ //西红柿盒子
public void pack(){
System.out.println("西红柿包装盒");
}
}
/**
* 西瓜盒子--适配器
*/
class WatermelonBagAdapter extends WatermelonBag{
private TomatoBag tomatoBag;
public WatermelonBagAdapter(TomatoBag tomatoBag){
this.tomatoBag = tomatoBag;
}
public void pack(){
tomatoBag.pack();
}
}
/**
* 西红柿盒子--适配器
*/
class TomatoBagAdapter extends TomatoBag{
private WatermelonBag watermelonBag;
public TomatoBagAdapter(WatermelonBag watermelonBag){
this.watermelonBag = watermelonBag;
}
public void pack(){
watermelonBag.pack();
}
}