设计模式--适配器模式

这篇具有很好参考价值的文章主要介绍了设计模式--适配器模式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

基本介绍

工作原理

类适配模式

介绍

应用实例介绍

类适配器模式注意事项和细节

对象适配模式

介绍

对象适配器模式注意事项和细节

接口适配器模式

介绍

适配器模式的注意事项和细节

基本介绍

 (1) 适配器模式(Adapter Pattern) 将某个类的接口转换成客户端期望的另一个接口表示 主要的目的是兼容性 让原本接口不匹配不能在一起工作的两个类可以协同工作 其别名为包装器(Wrapper)

(2) 适配器模式属于结构性模式

(3) 主要分为三类: 类适配器模式 对象适配器模式 接口适配器模式

工作原理

(1) 将一个类的接口转换成另一种接口 让原本接口不兼容的类可以兼容

(2) 从用户的角度看不到适配者 是解耦的

(3) 用户调用适配器转化出来的目标接口方法 适配器再调用被适配者的相关接口方法

(4) 用户收到反馈结果求偶感觉只是和目标接口交互

设计模式--适配器模式

 

类适配模式

介绍

基本介绍: Adapter类 通过继承被适配的类(src) 实现最终可以适配的接口(dst) 完成两者的适配(src->dst)

应用实例介绍

(1) 以生活中充电器的例子来讲解适配器 充电器本身相当于Adapter 220V交流电相当于被适配者(src) 

我们最后的目标就是最终的输出 5V直流电(dst)

最终可以适配的接口

public interface IVoltage5V {
    int outPut5V();
}

被适配的类

//被适配的类
public class Voltage220V {
    /**
     * 输出220v电压
     */
    public int outPut220V(){
        int src = 220;
        System.out.println("电压:"+src+"V");
        return src;
    }
}

类适配类

//类适配类
public class VoltageAdapter extends Voltage220V implements IVoltage5V{
    @Override
    public int outPut5V() {
        //适配220V电压为5V
        int srcV = outPut220V();
        int outV = srcV /44; //转换成5V
        return outV;
    }
}

最终实现

public class Phone {
    public void charging(IVoltage5V iVoltage5V){
        if(iVoltage5V.outPut5V()==5){
            System.out.println("手机可以正常充电 电压5V");
        }else if(iVoltage5V.outPut5V()>5){
            System.out.println("手机不可以正常充电 电压高于5V");
        }
    }
}

测试结果:

设计模式--适配器模式

类适配器模式注意事项和细节

(1) java是单继承机制 所以适配器需要继承类这一点是一个缺点 因为这要求最终适配的类必须是接口 有一定局限性

(2) 接口类的方法会在Adapter中都会暴露出来 增加了使用成本

(3) 由于其继承了其他的了就 所以它可以根据需求重写被继承类的方法 使得Adapter的灵活性增强了

对象适配模式

介绍

(1) 基本思路和类的适配器模式相同 只是将Adapter类做修改 不是继承src类 而是持有src类的实例 以解决兼容性的问题 即:持有 src类 实现dst类接口 完成src->dst的适配

(2) 根据"合成复用原则" 在系统中尽量使用关联关系来替代继承关系 因此大部分结构对象都是对象结构型模式

(3) 对象适配器模式是适配器模式常用的一种

对象适配的原理其实就是将原适配的类又继承进行解耦,遵循合成复用原则,其他类的写法都和类适配一致

//对象配类
public class VoltageAdapter implements IVoltage5V {

    private Voltage220V voltage220V;//继承关系调整为关联关系-聚合

    /**
     * 通过构造器 传入一个Voltager220V实例
     * @param voltage220V
     */
    public VoltageAdapter(Voltage220V voltage220V){
        this.voltage220V = voltage220V;
    }

    @Override
    public int outPut5V() {
        //适配220V电压为5V
        int outV = 0;
        if(null!=voltage220V){
            System.out.println("对象适配器开始适配");
            int src = voltage220V.outPut220V();//获取220V
            outV = src /44;
            System.out.println("对象适配器适配完成,输出电压为"+outV+"V");
        }
        return outV;
    }
}

测试:

设计模式--适配器模式

对象适配器模式注意事项和细节

(1) 对象适配器和类适配器其实算是同一种思想 只不过实现方式不同 根据合成复用原则 使用组合替代继承 所以它解决了类适配器必须继承src的局限性问题 也不再要求dst必须是接口

(2) 使用成本更低 更灵活

接口适配器模式

介绍

(1) 适配器模(default Adapter Pattern) 或缺省适配器模式

(2) 当不需要全部实现接口提供的方法时 可以先设计一个抽象类实现接口 并为该接口中每个方法实现一个默认方法(空方法) 那么该抽象类的子类可以有选择地覆盖父类的某些方法来实现需求

(3) 使用于一个接口不想使用其所有方法的情况

定义接口

public interface InterFace {
    void m1();
    void m2();
    void m3();
    void m4();

}

默认实现所有方法(空方法)

//在 AbsAdapter 将Interace的方法进行默认实现
public abstract class AbsAdapter implements InterFace{
    @Override
    public void m1() {

    }

    @Override
    public void m2() {

    }

    @Override
    public void m3() {

    }

    @Override
    public void m4() {

    }
}

使用内部类只实现要使用的方法,其他方法不用关注

设计模式--适配器模式

适配器模式的注意事项和细节

(1) 三种命名方法  是根据 src是以以怎样的形式给到Adapter(在Adapter里的形式) 来命名

(2) 类适配器: 以类给到 在Adapter里就是将src当做类 继承

     对象适配器: 以对象给到 在Adapter里 将src作为一个对象 持有

     接口适配器: 以接口给到 在Adapter里 将src作为一个接口 实现

(3) Adapter模式最大的作用还是将原本不兼容的接口融合在一起工作

(4) 实际开发中 实现起来并不拘泥于这三种经典形式文章来源地址https://www.toymoban.com/news/detail-426063.html

到了这里,关于设计模式--适配器模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 设计模式四:适配器模式

    1、适配器模式的理解 适配器模式可以理解为有两个现成的类Adaptee和Target,它们两个是不能动的,要求必须使用B这个类来实现一个功能,但是A的内容是能复用的,这个时候我们需要编写一个转换器 适配器模式 Adaptee:被适配者,现有的接口或者类; Adapter:适配器类,适配器

    2024年02月22日
    浏览(49)
  • 设计模式 06 适配器模式

    适配器模式(Adapter Pattern)属于 结构型 模式 结构型 模式关注如何将现有的类或对象组织在一起形成更加强大的结构。 在生活中,我们经常遇到这样的一个问题:轻薄笔记本通常只有 type-c 或者 usb-a 接口,没有网口。但日常使用中是往往需要连接网口上网的,这时想到的第

    2024年02月11日
    浏览(41)
  • 《设计模式》之适配器模式

    把一个类的接口转换成客户端所期待的另一种接口,从而使原接口不匹配而无法再一起工作的两个类能在一起工作。 在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是新环境要求的接口是这些现存对象所不能满足的。 如何应对

    2024年02月09日
    浏览(54)
  • 适配器设计模式

    一、适配器模式 B站:java架构师 定义:适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作 三种适配器:类的适配器模式、对象的适配器模式、接口的适配器模式 1.类适配器模式 实现方式:让

    2024年02月11日
    浏览(52)
  • 设计模式——适配器

    说起适配器,大家第一个想到的可能就是电源适配器。 电源适配器的作用想必同学们也都清楚,那就是将220伏高电压转换成想要的5伏至20伏左右稳定的低电压。 从某种程度上讲,编程中经常提起的适配器模式的原理与上面讲到的基本是一致的。 用于将一个类的接口转换成另

    2024年02月12日
    浏览(54)
  • 【设计模式】使用适配器模式做补偿设计

    适配器模式是一种 结构型设计模式 ,它提供了一个中间层,通过这个中间层,客户端可以使用统一的接口与具有不同接口的类进行交互,也就是说,将一个接口转换成客户期望的另一个接口,使得原本不兼容的接口能够协同工作。 举个现实中的例子,我们现在的很多轻薄笔

    2024年02月22日
    浏览(45)
  • 设计模式之适配器模式笔记

    记录下学习设计模式-适配器模式的写法。JDK使用版本为1.8版本。 意图 :将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 结构 : 其中: Target定义Client使用的与特定领域相关的接口。 Client与符合Targ

    2024年02月10日
    浏览(45)
  • 设计模式-适配器模式 Adapter

    适配器设计模式(Adapter Design Pattern)是一种结构型设计模式,用于 解决两个不兼容接口之间的问题 。适配器允许 将一个类的接口转换为客户端期望的另一个接口,使得原本由于接口不兼容而不能一起工作的类可以一起工作。 在适配器设计模式中,主要包含以下四个角色:

    2024年02月19日
    浏览(43)
  • 【设计模式】适配器模式怎么理解?

    什么是转换器模式? 转换器模式是一种结构型设计模式, 主要用于在两种不同类型的对象之间进行转换,而不需要改变原型的实际逻辑。这是一种在软件设计中经常使用的模式 ,它有助于保持代码的整洁和组织。在软件开发中,我们经常会遇到在不同层之间转换对象的需求

    2024年01月25日
    浏览(52)
  • 【软件设计模式之适配器模式】

    适配器模式作为一种结构型设计模式,它主要解决接口不兼容问题,使原本由于接口不匹配而无法一起工作的类可以协同工作。这种模式在软件开发中尤为重要,特别是在进行系统升级和集成旧系统时,它可以帮助保持系统的灵活性和可扩展性,同时减少对现有代码的修改。

    2024年02月21日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包