设计模式之结构型模式:适配器模式

前言

前面讲解完了设计模式中的创建性模式,本文开始讲解设计模式中的结构性模式之一:适配器模式。

一、适配器模式的是干什么的?

A类想要使用B类中的某些方法,但是不能直接使用,需要一个中间类对B类进行处理后,A类才能使用,这个中间类就是适配器,这种模式就是适配器模式。示意图如下。
在这里插入图片描述
既A类和B类之间夹了一个适配器类,适配器将B类传入的数据src进行处理,然后输出为A类需要使用的dst传给A类。

按照适配器如何接收B类的方式,将适配器模式分为三种模式,如果适配器类通过继承B类获得B类行为,则称为类适配器模式;如果直接将B类对象聚合到适配器类中,称为对象适配器模式;如果以接口的形式给到适配器类,则称之为接口适配器。

二、适配器模式案例

如我们有一个Voltage220v类只能输出220v的电压,但是现在我们要给手机充电,只能使用5V的电压,那么此时就需要一个适配器类VoltageAdapter首先将220v的电压转为5v,然后再给手机使用。三种适配器模式的实现如下:

1. 类适配器模式实现

在这里插入图片描述

  1. UML图如上所示,VoltageAdapter继承Voltage220v并实现IVoltage5v接口,然后手机再使用VoltageAdapter中输出的5V电压进行充电。
  2. 具体实现代码如下
public class Voltage220v {
    public int output200v()
    {
        return 220;
    }
}


public interface IVoltage5v {
    public int output5v();
}

public class VoltageAdapter extends Voltage220v implements IVoltage5v{
    @Override
    public int output5v() {
        int src = output200v();
        int dis = src / 44;
        return dis;
    }
}

public class Phone {
    public void charging(IVoltage5v iVoltage5v)
    {
        if (iVoltage5v.output5v() == 5)
        {
            System.out.printf("可以充电");
        }
        else
        {
            System.out.printf("不能充电");
        }
    }

}

public class client {
    public static void main(String[] args) {
        Phone phone = new Phone();
        IVoltage5v iVoltage5v = new VoltageAdapter();
        phone.charging(iVoltage5v);
    }
}

2. 对象适配器模式实现

在这里插入图片描述

  1. 对象适配器UML图如上所示,与类适配器模式的区别就是对象适配器直接将Voltage220v对象聚合到了VoltageAdapter中,其余和类适配器模式思想一样。

3. 接口适配器模式实现

接口适配器核心思想是通过一个抽象类继承接口,并对所有的接口方法做默认空实现,那么该抽象类的子类就可以有选择的覆盖父类中的某些方法,而不必覆盖全部方法。
在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mekeater

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值