适配器模式 35mm接口以及25mm接口USB Type-c接口:lighting接口 分别用类模式和对象模式完整代码实现耳机接口的转换
类模式实现:
// 目标接口
interface Earphone {
void listen();
}
// 适配者类
class Earphone3_5mm {
void listenWith3_5mm() {
System.out.println("使用3.5mm耳机听歌");
}
}
class Earphone2_5mm {
void listenWith2_5mm() {
System.out.println("使用2.5mm耳机听歌");
}
}
class EarphoneUSBTypeC {
void listenWithUSBTypeC() {
System.out.println("使用USB Type-C耳机听歌");
}
}
class EarphoneLighting {
void listenWithLighting() {
System.out.println("使用Lighting耳机听歌");
}
}
// 适配器类
class EarphoneAdapter implements Earphone {
private Earphone3_5mm earphone3_5mm;
private Earphone2_5mm earphone2_5mm;
private EarphoneUSBTypeC earphoneUSBTypeC;
private EarphoneLighting earphoneLighting;
public EarphoneAdapter(Earphone3_5mm earphone3_5mm) {
this.earphone3_5mm = earphone3_5mm;
}
public EarphoneAdapter(Earphone2_5mm earphone2_5mm) {
this.earphone2_5mm = earphone2_5mm;
}
public EarphoneAdapter(EarphoneUSBTypeC earphoneUSBTypeC) {
this.earphoneUSBTypeC = earphoneUSBTypeC;
}
public EarphoneAdapter(EarphoneLighting earphoneLighting) {
this.earphoneLighting = earphoneLighting;
}
@Override
public void listen() {
if (earphone3_5mm != null) {
earphone3_5mm.listenWith3_5mm();
} else if (earphone2_5mm != null) {
earphone2_5mm.listenWith2_5mm();
} else if (earphoneUSBTypeC != null) {
earphoneUSBTypeC.listenWithUSBTypeC();
} else if (earphoneLighting != null) {
earphoneLighting.listenWithLighting();
} else {
System.out.println("未知的耳机类型");
}
}
}
// 客户端代码
public class AdapterClassDemo {
public static void main(String[] args) {
Earphone earphone1 = new EarphoneAdapter(new Earphone3_5mm());
earphone1.listen();
Earphone earphone2 = new EarphoneAdapter(new Earphone2_5mm());
earphone2.listen();
Earphone earphone3 = new EarphoneAdapter(new EarphoneUSBTypeC());
earphone3.listen();
Earphone earphone4 = new EarphoneAdapter(new EarphoneLighting());
earphone4.listen();
}
}
对象模式实现:
// 目标接口
interface Earphone {
void listen();
}
// 适配者类
class Earphone3_5mm {
void listenWith3_5mm() {
System.out.println("使用3.5mm耳机听歌");
}
}
class Earphone2_5mm {
void listenWith2_5mm() {
System.out.println("使用2.5mm耳机听歌");
}
}
class EarphoneUSBTypeC {
void listenWithUSBTypeC() {
System.out.println("使用USB Type-C耳机听歌");
}
}
class EarphoneLighting {
void listenWithLighting() {
System.out.println("使用Lighting耳机听歌");
}
}
// 适配器类
class EarphoneAdapter implements Earphone {
private Earphone3_5mm earphone3_5mm;
private Earphone2_5mm earphone2_5mm;
private EarphoneUSBTypeC earphoneUSBTypeC;
private EarphoneLighting earphoneLighting;
public EarphoneAdapter(Earphone3_5mm earphone3_5mm) {
this.earphone3_5mm = earphone3_5mm;
}
public EarphoneAdapter(Earphone2_5mm earphone2_5mm) {
this.earphone2_5mm = earphone2_5mm;
}
public EarphoneAdapter(EarphoneUSBTypeC earphoneUSBTypeC) {
this.earphoneUSBTypeC = earphoneUSBTypeC;
}
public EarphoneAdapter(EarphoneLighting earphoneLighting) {
this.earphoneLighting = earphoneLighting;
}
@Override
public void listen() {
if (earphone3_5mm != null) {
earphone3_5mm.listenWith3_5mm();
} else if (earphone2_5mm != null) {
earphone2_5mm.listenWith2_5mm();
} else if (earphoneUSBTypeC != null) {
earphoneUSBTypeC.listenWithUSBTypeC();
} else if (earphoneLighting != null) {
earphoneLighting.listenWithLighting();
} else {
System.out.println("未知的耳机类型");
}
}
}
// 客户端代码
public class AdapterObjectDemo {
public static void main(String[] args) {
Earphone earphone1 = new EarphoneAdapter(new Earphone3_5mm());
earphone1.listen();
Earphone earphone2 = new EarphoneAdapter(new Earphone2_5mm());
earphone2.listen();
Earphone earphone3 = new EarphoneAdapter(new EarphoneUSBTypeC());
earphone3.listen();
Earphone earphone4 = new EarphoneAdapter(new EarphoneLighting());
earphone4.listen();
}
}
``
原文地址: https://www.cveoy.top/t/topic/hjjx 著作权归作者所有。请勿转载和采集!