假如我的手机是typec类型的充电口,但是现在却只有个传统的MicroUSB充电线,怎么办?很简单,弄个转换接头,MicroUSB口转化成typec的,问题解决。这就是适配器的应用。

  适配器就是个转化适配中间接口,可以将不匹配的两件事整合到一起,把不匹配变的匹配。

  通常,适配器有三种:类适配器、对象适配器。

    类适配器:继承实现,静态定义

    对象适配器:代理实现,动态组合模式

  一、类适配器

    1.1、有个传统的Micro USB的充电线

复制代码
package com.cn.adapter.classAdapter;

/**
 * 有个传统的Micro USB的充电线
 * 
 * @author cfang
 * 2018年6月1日 下午4:13:01
 */
public interface MicroUSB {

    void isMicroUSB();
}
复制代码

    1.2、手机充电口为typec

复制代码
package com.cn.adapter.classAdapter;

/**
 * 手机充电口为typec
 * 
 * @author cfang
 * 2018年6月1日 下午4:14:28
 */
public interface TypeC {

    void isTypeC();
}
复制代码
复制代码
package com.cn.adapter.classAdapter;


public class TypeCImpl implements TypeC{

    @Override
    public void isTypeC() {
        System.out.println("typec充电口");
    }

}
复制代码

    1.3、整个适配器adapter,将MicroUSB 转化成typec

复制代码
package com.cn.adapter.classAdapter;

/**
 * 用于将MicroUSB接口转化成tytpec接口
 * 
 * @author cfang
 * 2018年6月1日 下午4:46:28
 */
public class Adapter extends TypeCImpl implements MicroUSB{

    @Override
    public void isMicroUSB() {
        isTypeC();
    }

}
复制代码

    1.4、测试main方法

复制代码
package com.cn.adapter.classAdapter;

public class App {

    public static void main(String[] args) {
        
        MicroUSB microUSB = new Adapter();
        microUSB.isMicroUSB();
    }
}
复制代码

 

  二、对象适配器

    2.1、TypeC接口、MicroUSB接口以及实现同上

    2.3、适配器类

复制代码
package com.cn.adapter.objectAdapter;

import com.cn.adapter.classAdapter.MicroUSB;
import com.cn.adapter.classAdapter.TypeC;

public class Adapter implements MicroUSB{
    
    private TypeC typeC;
    public Adapter(TypeC typeC){
        this.typeC = typeC;
    }

    @Override
    public void isMicroUSB() {
        typeC.isTypeC();
    }
    

}
复制代码

    2.4、测试main方法

复制代码
package com.cn.adapter.objectAdapter;

import com.cn.adapter.classAdapter.MicroUSB;
import com.cn.adapter.classAdapter.TypeC;
import com.cn.adapter.classAdapter.TypeCImpl;

public class App {

    public static void main(String[] args) {
        
        TypeC typeC = new TypeCImpl();
        MicroUSB microUSB = new Adapter(typeC);
        microUSB.isMicroUSB();
    }
}
复制代码

 

  三、很多时候,还会遇到一种适配器,接口的适配器,很简单,假如有个很大的接口,几十个方法,但是并不是每个实现该接口的都必须得实现所有方法,此时,就可以做个抽象的中间类,实现大接口,方法实现都是空。之后开发,都继承这个抽象类,用哪些方法,就覆写哪些方法。

 

 1 package com.example.springboot.dto;
 2 
 3 public interface A {
 4     void a0();
 5     void a1();
 6     void a2();
 7     void a3();
 8     void a4();
 9 }
10 
11 /**
12  * 接口适配器
13  */
14 public abstract  class Adapter implements A {
15 
16     public void a0() {
17 
18     }
19 
20     public void a1() {
21 
22     }
23 
24     public void a2() {
25 
26     }
27 
28     public void a3() {
29 
30     }
31 
32     public void a4() {
33 
34     }
35 }
36 public class B extends Adapter{
37 
38     public void a2() {
39         super.a2();
40     }
41 }

 

转载于:https://www.cnblogs.com/eric-fang/p/9122564.html