定义:适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式
思考到某些产品的性能很类似,如果想兼容其它产品,然而又不想思考太多的对象辨别或者if else, 能够用适配器模式来适配对象。
在产品迭代的过程中常常有不同的版本,尽管版本不同,然而大体上的性能和接口差不多,只是具体的实现有些微的区别,这个时候能够在前面的迭代零碎中一直适配最新的产品就能够了。
//产品对立接口interface AsianCarRun { public void run(String carType, int speed);}
//被兼容产品的接口interface ChinaCarRun { public void BiYaDiRun(int speed); public void HongQiRun(int speed);}
//被兼容产品1public class HongqiCar implements ChinaCarRun{ @Override public void BiYaDiRun(int speed) { } @Override public void HongQiRun(int speed) { System.out.println("this is HongQi running, and the speed is: "+ speed); }}
//被兼容产品2public class ChangaAnCar implements ChinaCarRun{ @Override public void BiYaDiRun(int speed) { System.out.println("this is BiYaDi running, and the speed is: "+speed); } @Override public void HongQiRun(int speed) { }}
//兼容主体类产品public class AsianCar implements CarRun { @Override public void run(String carType, int speed) { AsianCarAdapter carAdapter = new AsianCarAdapter(carType); carAdapter.run(carType,speed); }}
//适配器public class AsianCarAdapter implements CarRun{ ChinaCarRun chinaCarRun; public AsianCarAdapter(String carType) { if(carType == "HongQi"){ chinaCarRun = new HongqiCar(); } if(carType == "BiYaDi"){ chinaCarRun = new ChangaAnCar(); } } @Override public void run(String carType,int speed) { if(carType == "HongQi"){ chinaCarRun.HongQiRun(speed); } if(carType == "BiYaDi"){ chinaCarRun.BiYaDiRun(speed); } }}
测试类:public class AsianCarTest { @Test public void runTest() { AsianCar asianCar = new AsianCar(); asianCar.run("HongQi",120); }}测试后果:this is HongQi running, and the speed is: 120