JAVA 适配器模式

文章目录

介绍

适配器

实现

适配器模式(类适配器)

适配器模式(接口适配器)

介绍

描述

适配器模式设计模式属于结构型模式,是作为两个不兼容的接口之间的桥梁,即将一个现存的接口适配为期待的另一个接口。

特点

优点:适配器模式可以让两个没有任何关系得类在一起运行、提高了类的复用、增加了类的透明度、灵活性好。

缺点:过多地使用适配器,会让系统非常零乱,不易整体进行把握。

适用

  1. 需要修改了一个已经投产中的接口。

  2. 系统需要使用现有的类,而此类的接口不符合系统的需要。

  3. 适配器模式最好在详细设计不要考虑它,它不是为了解决还处在开发阶段的问题,而是解决正在服役的项目问题。

适配器

实现

提供一个设备 Device 接口和一个实现了 Device 接口的实体类 DeviceUse。同时提供一个电压Voltage 接口和实现了 Voltage 接口的实体类。该类可以提供 5V 和 220V 的电压。要想让 DeviceUse 使用特定电压,我们需要创建一个实现了 Device 接口的适配器类 DeviceVoltageAdapter ,并使用 Voltage 对象来获取电压。DeviceUse 使用适配器类 DeviceVoltageAdapter 传递所需的电压值,不用明确具体提供电压的类。

适配器模式(类适配器)

第一步:创建一个电压Voltage 接口,并提供实现类Voltage220VVoltage5V分别提供220V 和 5V电压。

public interface Voltage {

    public void get5V();
    public void get220V();

}

​// 提供5V电压​
public class Voltage5V implements Voltage {
    @Override
    public void get5V() {
        System.out.println("提供 5 V 电压");
    }

    @Override
    public void get220V() {

    }
}

​
// 提供220V电压​
public class Voltage220V implements Voltage {
    @Override
    public void get5V() {

    }

    @Override
    public void get220V() {
        System.out.println("提供 220 V 电压");
    }
}

​

第二步:提供设备Device接口。

public interface Device {
    public void use(String vo);
}

第三步:创建实现了 Device 接口的适配器类DeviceVoltageAdapter 。

public class DeviceVoltageAdapter implements Device{

    Voltage voltage;

    public DeviceVoltageAdapter(String vo) {
        if (vo.equals("5V")){
           voltage =  new Voltage5V();
        }else {
            voltage =  new Voltage220V();
        }
    }

    @Override
    public void use(String vo) {
        if (vo.equals("5V")){
            voltage.get5V();
        }else {
            voltage.get220V();
        }
    }
}

第四步:创建实现了 Device 接口的实体类 DeviceUse

public class DeviceUse implements Device{
    DeviceVoltageAdapter adapter;

    @Override
    public void use(String vo) {
        adapter = new DeviceVoltageAdapter(vo);
        adapter.use(vo);
    }
}

第五步:测试。

    public static void main(String[] args) {
        
       Device device = new DeviceUse();
       device.use("5V"); // 提供 5 V 电压
       device.use("220V"); //  提供 220 V 电压

    }

适配器模式(接口适配器)

public interface Charge {

    // 手机充电
    void PhoneCharge();
    // 电脑充电
    void ComputerCharge();

}

// 提供适配器类 抽象类
public abstract class ChargeAdapter implements Charge {
    // 默认空实现
    public void PhoneCharge() {

    }

    public void ComputerCharge() {

    }
}
//
public class Test {
    public static void main(String[] args) {
           
       // 具体实现
       ChargeAdapter adapter = new ChargeAdapter(){
            @Override
            public void PhoneCharge() {
                System.out.println("手机充电");
            }

            @Override
            public void ComputerCharge() {
                super.ComputerCharge();
            }
        };

        // 调用   
        adapter.PhoneCharge();
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值