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

定义:适配器模式(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

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理