首页 > 其他分享 >适配器模式

适配器模式

时间:2023-08-01 22:00:01浏览次数:30  
标签:tfCard 实现 适配 适配器 接口 模式 public

分类

  1. 类适配器模式
  2. 对象适配器模式

类适配器是由继承关系构成,对象适配器是聚合或组合的关系构成所以类适配器耦合性较高,使用较少

角色/结构

  1. 目标接口:我们中国的手机充电器
  2. 适配者类:欧洲那边已有的欧洲标准的插座
  3. 适配器类:可以把我们的手机充电器调整到可以用欧洲插座的适配器

类适配器

个人见解

  1. 代码实现上:其实就是适配器类起了"和亲"的作用,通过同时实现一方,又继承另一方的方式来实现,既是适配者类又是目标接口类,当然实现的那方必须是目标接口类(毕竟你可以直接通过继承来调用它的方法)
  2. 类的抽象上:其实适配者类和目标接口在概念上可以互换!(当然得在双方都有接口和实现类的情况上)(警示1.需要类在抽象是否清晰定义2.我们能否利用这种特性,实现双头蛇效果)

问题:

  1. 不符合合成复用原则
  2. 必须在适配者类有接口的情况下

对象适配器

解决了类适配器的问题

区别把目标接口类聚合在我们的适配器类里面,也即是代码上所谓的"适配"变成通过实现适配者接口或者类然而实际上调用目标接口类来实现

/**
 * @author:天才玩家M
 * @date:2023/8/1 20:31
 * @description:适配器类
 */
public class TFAdapterSD implements SDCard {
    private TFCard tfCard;

    public TFAdapterSD(TFCard tfCard) {
        this.tfCard = tfCard;
    }

    @Override
    public String readSD() {
        System.out.println("通过Adapter适配中,调用READ");
        return tfCard.readTF();
    }

    @Override
    public void writeSD(String msg) {
        System.out.println("通过Adapter适配中,调用WRITE");
        tfCard.writeTF(msg);
    }
}

接口适配器

使用场景

只需要对某两个类之间的一个方法进行适配

与老师代码的不同

老师的是要通过一个抽象类来默认实现原先方法,这种方法自然可以,不过无形中复杂了类之间的关系与结构,所以我直接用接口的默认方法来实现了

然后adapter具体需要适配哪个方法,就需要再去具体实现一下

应用场景

  • 以前开发的系统存在满足新系统功能需求的类,但其接口同新系统的接口不一致。
  • 使用第三方提供的组件,但组件接口定义和自己要求的接口定义不同。

标签:tfCard,实现,适配,适配器,接口,模式,public
From: https://www.cnblogs.com/seamount3/p/17599185.html

相关文章

  • Java设计模式
    #Java设计模式GoF(最先开始着手进行设计模式分类整理工作)对设计模式的定义是:设计模式是在特定的环境下为解决某一通用软件设计问题提供的一套定制的解决方案,该方案描述了对象和类之间的相互作用。一、面向对象设计的七大原则1.1单一职责原则定义:一个对象应该只包含单一的职......
  • 沁恒触摸主动屏蔽与互感模式PCB Layout说明
    沁恒MCU触摸按键主动屏蔽模式与互感模式Layout说明主动屏蔽模式      主动屏蔽模式是指利用MCU的专用引脚,启用屏蔽功能,对各触摸检测通道做隔离,主动屏蔽主要作用有:      1)减小电路板上的互电容,从而减小触摸传感器基础电容值,增加触摸相对变化率;  ......
  • 2023模式识别课程师资培训会重磅招募
    人工智能已成为国际竞争的新焦点,也是我国的国家战略。《模式识别》是面向人工智能方向主干课程,对人工智能人才培养及人工智能专业建设具有举足轻重的作用。为推动人工智能专业人员的培养,重点领域模式识别课程群虚拟教研室、北京航空航头大学、北京邮电大学、北京百度网讯科技有限公......
  • 汇编-彩色字符模式显示缓冲区结构
      80×25彩色字符模式显示缓冲区的结构:1.内存地址空间中,B8000H~BFFFFH共32KB的空间,为80×25彩色字符模式的显示缓冲区。向这个地址空间写入数据,写入的内容将立即出现在显示器上2.在80×25彩色字符模式下,显示器可以显示25行,每行80个字符,每个字符可以有256种属性(背景色、前景......
  • Linux安装部署seata集群模式
    第一步:下载seata安装包下载地址:https://seata.io/zh-cn/blog/download.html解压如下进入conf文件夹编辑registry.conf文件:点击查看代码 registry{#file、nacos、eureka、redis、zk、consul、etcd3、sofatype="nacos"nacos{application="seata-ser......
  • 工厂模式和代理模式的区别?
    工厂模式是指当有一个抽象类和多个实体类时,抽象类和实体类之间,通过工厂类来进行关联。而工厂类是通过create方法,创造实体类,利用if或者switch进行条件判断返回创建的产品。代理模式不创建实体类。它是通过方法的拼接来代替对象完成某些特殊的前置和后置服务advice。......
  • GO 编程模式:FUNCTIONAL OPTIONS
    在本篇文章中,我们来讨论一下FunctionalOptions这个编程模式。这是一个函数式编程的应用案例,编程技巧也很好,是目前在Go语言中最流行的一种编程模式。但是,在我们正式讨论这个模式之前,我们需要先来看看要解决什么样的问题。本文是全系列中第3/10篇:Go编程模式Go编程模式:切片,接口......
  • FIFO FWFT Adapter(First Word Fall Through) 预读FIFO适配器
    预读fifo修改了一下1:增加了暂停预读信号stop。修改2:考虑一种情况,在没有预取的情况下,若fifo剩余的数据长度比预取流水线长度小,且在预取完成的前后一段时间内都没有读请求,empty流水线内会产生一段"气泡"。此时若有新的数据写入fifo,预取流水线不会对这些“气泡”进行填充,如果能......
  • JDK中有关23个经典设计模式
    Structural(结构模式)Adapter:把一个接口或是类变成另外一种。java.util.Arrays#asList()javax.swing.JTable(TableModel)java.io.InputStreamReader(InputStream)java.io.OutputStreamWriter(OutputStream)javax.xml.bind.annotation.adapters.XmlAdapter#marshal()javax.......
  • 观察者模式在项目中的实际应用
    观察者模式观察者模式的定义:在对象之间定义一个一对多的依赖,当一个对象状态改变的时候,所有依赖的对象都会自动收到通知!发布订阅模式是什么?观察者模式和发布订阅模式是有一点点区别的,区别有以下几点:前者:观察者订阅主题,主题也维护观察者的记录,而后者:发布者和订阅者不需要彼此了......