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

设计模式之适配器模式

时间:2023-02-25 13:58:42浏览次数:62  
标签:耳机 适配器 模式 3.5 void 5mm 设计模式 public Earphone3

  • 简介
    当我们需要使用某个对象的功能,但是我们没有这个对象时,我们可以用适配器和替换对象来实现这个功能.比如我们手机有typec接口,但是我们没有这个接口的耳机,我们可以用typec转3.5mm的线和耳机和手机连上,我们就可以用3.5mm耳机听到音乐

  • 模式应用

  • 类图

  • 源码实现

点击查看代码
package designpattern.proxy.adapter;

//typc插头的耳机 可以插有typec口的手机
public interface EarphoneTypeCPlug {

    public void soundByTypeC();
}

点击查看代码
package designpattern.proxy.adapter;

//3.5插头的耳机 可以插有3.5mm口的未来科技手机
public interface Earphone3_5mmPlug {

    public void soundBy3_5mm();
}

这是一个手机,手机可以连上typec插头,可以放音乐

点击查看代码
package designpattern.proxy.adapter;

public class HuaweiPhone {

    private EarphoneTypeCPlug earphoneTypeCPlug = null;

    //插上TypeCPlug的耳机
    public void link(EarphoneTypeCPlug earphoneTypeCPlug) {
        this.earphoneTypeCPlug = earphoneTypeCPlug;
    }

    public void music(){
        if(earphoneTypeCPlug!=null){
            System.out.println("音乐通过typec耳机在播放");
            earphoneTypeCPlug.soundByTypeC();
        }else{
            System.out.println("手机外发...");
        }
    }


}

这是3.5mm的耳机

点击查看代码
package designpattern.proxy.adapter;

//3.5mm耳机
public class Earphone3_5mm implements Earphone3_5mmPlug {
    @Override
    public void soundBy3_5mm() {
        System.out.println("这是来自未来科技3.5mm耳机的声音...");
    }
}

这是我们的转化线,也就是适配器

点击查看代码
package designpattern.proxy.adapter;

public class AdapterTypeC2_3_5mm implements Earphone3_5mmPlug,EarphoneTypeCPlug{

    private Earphone3_5mmPlug plug1;

    //插上3.5mm耳机
    public void link(Earphone3_5mmPlug plug1) {
        this.plug1 = plug1;
    }

    @Override
    public void soundBy3_5mm() {

    }

    @Override
    public void soundByTypeC() {
        System.out.println("转接线在工作...");
        plug1.soundBy3_5mm();
    }
}

现在我们来测试下,耳机能不能正常工作

点击查看代码
package designpattern.proxy.adapter;

public class Client {

    public static void main(String[] args) {
        //我有一个华为手机
        HuaweiPhone phone = new HuaweiPhone();

        //我有一副3.5的耳机
        Earphone3_5mm earphone3_5mm = new Earphone3_5mm();

        //我买了一根转接线
        AdapterTypeC2_3_5mm adapterTypeC2_3_5mm = new AdapterTypeC2_3_5mm();

        //把耳机插到转接线上
        adapterTypeC2_3_5mm.link(earphone3_5mm);

        //把转接线插到手机上
        phone.link(adapterTypeC2_3_5mm);

        //播放音乐
        phone.music();

    }
}

结果如下

标签:耳机,适配器,模式,3.5,void,5mm,设计模式,public,Earphone3
From: https://www.cnblogs.com/jiaqirumeng/p/17154263.html

相关文章

  • java——spring boot集成RabbitMQ——spring boot实现发布订阅模式——消费者
          pom文件:<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/200......
  • A、创建模式(5种)
    设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、......
  • 4 原型模式
    4原型模式定义:通过复制现有实例来创建新的实例,无需知道相应类的信息。简单地理解,其实就是当需要创建一个指定的对象时,我们刚好有一个这样的对象,但是又不能直接使用,我会cl......
  • 3 生成器模式
    3生成器模式定义:封装一个复杂对象构造过程,并允许按步骤构造。定义解释:我们可以将生成器模式理解为,假设我们有一个对象需要建立,这个对象是由多个组件(Component)组合而成,每......
  • 2 单例模式
    2单例模式定义:确保一个类最多只有一个实例,并提供一个全局访问点单例模式可以分为两种:预加载和懒加载2.1预加载顾名思义,就是预先加载。再进一步解释就是还没有使用该单......
  • 5.1 类适配器模式
    5.1类适配器模式通过多重继承目标接口和被适配者类方式来实现适配举例(将USB接口转为VGA接口),类图如下:  USBImpl的代码:publicclassUSBImplimplementsUSB{......
  • 设计模式之代理模式
    简介在某些场景下,我们需要增强某个对象的使用,比如我们在执行某个方法前加输出一条日志,但是我们不能直接改这个类,我们可以用代理对象来实现这个功能模式应用Spri......
  • java——spring boot集成RabbitMQ——topics模式——实现消费者
           ......
  • 设计模式(十五)-面向对象概念
    一、设计原则1、单一职责:设计目的单一的类。2、开放-封闭原则:对扩展开放,对修改关闭。3、里氏替换原则:子类可代替父类。4、依赖倒置:要依赖与接口,而不是具体实现,针对接口编程......
  • 6_代理模式下开发各种功能-1_多种参数传递问题
     1单个基本数据类型2多个基本数据类型3单个引用数据类型4map集合数据类型5多个引用数据类型接口packagecom.msb.mapper;importcom.msb.pojo.Emp;importorg.apache.ibati......