java——接口适配器

接口适配器

一、前言

        设想,我现在的目标接口有多个方法,可以输出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());
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值