乐趣区

关于设计模式:设计模式适配器模式

定义:适配器模式(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);
}
// 被兼容产品 1
public 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);
    }
}
// 被兼容产品 2
public 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
退出移动版