适配器设计模式(adapter)

适配器设计模式(adapter)

首先问一下大家,知道什么是适配器吧?就你那个和砖头一样的笔记本的电源就是一个适配器,你也可以想象成变压器。适配器模式也是这种意思。

首先!!!还是举个例子!我们就说这个笔记本电源吧,大家知道日本的电压是110V吧,和中国的220V是不一样的,这并不代表我们的电脑带到日本就不能使用了,通过适配器我们依旧可以继续使用,所以说就这样一个例子来说,无非是很切题了!

首先我们要知适配器模式包三个角色

  1. Target(目标抽象类):目标抽象类定义客户所需的接口,可以是一个抽象类或接口,也可以是具体类。
  2. Adapter(适配器类):它可以调用另一个接口,作为一个转换器,对Adaptee和Target进行适配。它是适配器模式的核心。
  3. Adaptee(适配者类):适配者即被适配的角色,它定义了一个已经存在的接口,这个接口需要适配,适配者类包好了客户希望的业务方法。

是不是觉得一下子生涩了很多!哈哈哈哈哈哈都是我复制的! 好了好了,让我用白话文来说一下这几个概念。

首先,我们可以用电脑打游戏,打代码,但是前提是得有电源才行,但是就像之前提出的,这个电源往往还不太一样,有110V的,有220V的,这相当于一个变量,但是我们要求不管这个电源怎么变化,传输给电脑的必须是一样的电流才行,首先就像刚才复制的 所说,我们需要一个Target,这里我们的Target就是供电和打代码:

public interface Target {
    void power();  //供电
    void development();  //写代码
}

那么很明显的可以看到,这是一个接口,需要有人能实现它,那么谁实现它呢?我们接着往下看:

public class Adapter implements Target{
    private Adaptee adaptee;  //适配器
    public Adapter(){}
    public Adapter(Adaptee adaptee) {
        super();
        this.adaptee = adaptee;
    }

    @Override
    public void power() {
        adaptee.power();
    }
    @Override
    public void development() {
        System.out.println("开始编程");
    }
}

这里一下子就很烦,大段大段的代码我也不想看,这里我给大家解释一下:这里出现了adaptee,你可以把这个当成真正的适配器,这里面有客户希望的业务方法,在我们这里就是要求供电平稳,这里我们通过构造函数将适配器接入,然后用接进来的适配器进行供电然后编程:

public interface Adaptee {
     void power();
}

这是一个接口,提供一个规范。然后接下来就是两种电压的情况:

public class Adaptee110 implements Adaptee {
    @Override
    public void power() {
        System.out.println("提供110V的电压");
    }
}
public class Adaptee220 implements Adaptee {
    @Override
    public void power() {
        System.out.println("提供220V的电压");
    }
}

这两种电压都是实现Adaptee并重写供电方法。
然后看看主函数就大彻大悟了:

public class TestCase {
    public static void main(String[] args) {
        Adaptee a1 = new Adaptee110();
        Adaptee a2 = new Adaptee220();

        Target target = new Adapter(a1);

        target.power();
        target.development();
    }
}

现在虽然实例化了两个电源,但是明显可以看到,我们用的是a1这个电源,也就是110V的电源:

Target target = new Adapter(a1);

但是很明显,无论怎么更换电源,我依旧可以编程,通过适配器转化成统一的标准,这就是适配器模式,在面试里面也是经常会考的。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值