类模式实现:

// 目标接口
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();
    }
}
``
适配器模式 35mm接口以及25mm接口USB Type-c接口:lighting接口 分别用类模式和对象模式完整代码实现耳机接口的转换

原文地址: https://www.cveoy.top/t/topic/hjjx 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录