美文网首页
设计模式-适配器模式

设计模式-适配器模式

作者: 灵台悠步 | 来源:发表于2021-07-31 09:16 被阅读0次

适配器模式

适配器模式,又叫变压器模式,他的功能是将一个类的接口变成客户端所期望的另一种接口从而使得原本因为接口不匹配而导致无法在一起工作的两个类能够在一起工作,属于结构性设计模式。

适配器模式一般包含三种角色:

  • 目标角色(Target): 也就是我们期望的接口;
  • 源角色(Adaptee):被适配的,存在于系统中,内容满足客户需求(需要转换),但接口不匹配的接口实例
  • 适配器(Adapter):将源角色(Adaptee)转换为目标角色(Target)的类实例

适配器模式有三种形式:类适配器,对象适配器、接口适配器

类适配器:
类适配器的原理就是通过继承来实现适配器功能:让适配器Adapter实现目标角色Target接口,同时继承源角色Adaptee,这样适配器就同时具备Target和Adaptee的特性,就可以将两者进行转化。

package com.jdwa.adapterv1;

/**
 * Adaptee
 */
public class AC220 {

    public int outputAC220(){
        int output = 220;
        System.out.println("输出电压:"+output+"V");
        return output;
    }
}
package com.jdwa.adapterv1;

public interface DC5 {
    int outDC5();
}
package com.jdwa.adapterv1;

public class PowerAdapter extends AC220 implements DC5 {

    @Override
    public int outDC5() {
        int adapteeInput = super.outputAC220();
        int targetOutput = adapteeInput/44;
        System.out.println("输入:"+adapteeInput+";输出DC"+targetOutput+"V");
        return targetOutput;
    }
}

package com.jdwa.adapterv1;

public class Client {
    public static void main(String[] args) {
        DC5 dc5 = new PowerAdapter();
        dc5.outDC5();
    }
}

对象适配器:
对象适配器的原理就是通过组合来实现适配器功能。具体做法:让Adapter实现Target接口,然后内部持有Adaptee实例,然后让Target接口规定方法内转换Adaptee
代码只需要修改适配器类:

package com.jdwa.adapterv1;

public class ObjectPowerAdapter implements DC5{
    private AC220 ac220;

    public ObjectPowerAdapter(AC220 ac220){
        this.ac220 = ac220;
    }


    @Override
    public int outDC5() {
        int input = ac220.outputAC220();
        int output = input/44;
        System.out.println("AC220:"+input+";DC5:"+output);
        return output;
    }
}

接口适配器:
接口适配器的关注点与类适配器与对象适配器的不太一样,类适配器与对象适配器着重于将系统存在的一个角色(Adaptee)转化成目标接口(Target)所需内容,而接口适配器的使用场景是解决接口方法过多,如果直接实现接口,那么类会多出许多空实现的方法,类显得很臃肿。此时,使用接口适配器就能让我们只实现我们需要的接口方法,目标更清晰。
说的直白点,就是在接口方法很多时,采用对象适配器,只不过其他的方法是默认实现。这里就不再用代码展示了。

相关文章

  • 简说设计模式之适配器模式

    前言:对于设计模式基础概念可以去看[简说设计模式之设计模式概述] 一、什么是适配器模式 适配器模式(Adapter...

  • 设计模式 - 目录

    设计模式01 - 单例模式 设计模式02 - 工厂模式 设计模式03 - 建造者模式 设计模式04 - 适配器模式...

  • 最常用的设计模式---适配器模式(C++实现)

    适配器模式属于结构型的设计模式,它是结构型设计模式之首(用的最多的结构型设计模式)。 适配器设计模式也并不复杂,适...

  • iOS设计模式(5)策略模式

    设计模式系列文章 《iOS设计模式(1)简单工厂模式》《iOS设计模式(2)工厂模式》《iOS设计模式(3)适配器...

  • iOS设计模式(6)模板模式

    设计模式系列文章 《iOS设计模式(1)简单工厂模式》《iOS设计模式(2)工厂模式》《iOS设计模式(3)适配器...

  • iOS设计模式(7)建造者模式

    设计模式系列文章 《iOS设计模式(1)简单工厂模式》《iOS设计模式(2)工厂模式》《iOS设计模式(3)适配器...

  • iOS设计模式(4)抽象工厂模式

    设计模式系列文章 《iOS设计模式(1)简单工厂模式》《iOS设计模式(2)工厂模式》《iOS设计模式(3)适配器...

  • iOS设计模式(1)简单工厂模式

    设计模式系列文章 《iOS设计模式(2)工厂模式》《iOS设计模式(3)适配器模式》《iOS设计模式(4)抽象工厂...

  • iOS设计模式(2)工厂模式

    设计模式系列文章 《iOS设计模式(1)简单工厂模式》《iOS设计模式(3)适配器模式》《iOS设计模式(4)抽象...

  • iOS设计模式(8)外观模式

    设计模式系列文章 《iOS设计模式(1)简单工厂模式》《iOS设计模式(2)工厂模式》《iOS设计模式(3)适配器...

网友评论

      本文标题:设计模式-适配器模式

      本文链接:https://www.haomeiwen.com/subject/glspeltx.html