文章目录
接口适配器
一、前言
设想,我现在的目标接口有多个方法,可以输出5V,12V,20V的电压。按照正常逻辑,设计一个适配器去实现这个接口,很显然需要实现所有的方法。但是,实际使用中,其实只需要使用其中一个方法就可以了,比如我mac电脑直流电压20V,只需要实现20V的方法就可以了。
因此,设计一个中间类去把目标接口的所有方法空实现,然后适配器类再去继承这个中间类,选择性重写我所需要的方法,岂不是更好。代码如下,
二、接口适配器模式UML图
三、代码示例
1、适配接口:PowerOutput
package com.gykalc.jdk8.interfaceadapter;
public interface PowerOutput {
int output5V();
int output7V();
int output9V();
int output100V();
int output200V();
}
2、接口适配器:PowerAdapter
package com.gykalc.jdk8.interfaceadapter;
public abstract class PowerAdapter implements PowerOutput {
@Override
public int output5V() {
return 0;
}
@Override
public int output7V() {
return 0;
}
@Override
public int output9V() {
return 0;
}
@Override
public int output100V() {
return 0;
}
@Override
public int output200V() {
return 0;
}
}
3、需要用到接口的具体类,例如手机类:Phone
package com.gykalc.jdk8.interfaceadapter;
public class Phone {
public void charging(PowerOutput powerOutput) {
int output5V = powerOutput.output5V();
if (output5V == 5) {
System.out.println("电压正确,充电中...");
}else {
System.out.println("电压不对,手机爆炸...");
}
}
}
4、实现具体接口方法的类,也就是手机类需要用到的类,Output5V
package com.gykalc.jdk8.interfaceadapter;
public class Output5V extends PowerAdapter {
@Override
public int output5V() {
return 5;
}
}
5、调用类:Client
package com.gykalc.jdk8.interfaceadapter;
public class Client {
public static void main(String[] args) {
Phone phone = new Phone();
phone.charging(new Output5V());
}
}