java23种设计模式——6、适配器模式

源码在个人githubgitee中获取html

目录

java23种设计模式—— 1、设计模式介绍
java23种设计模式—— 2、单例模式
java23种设计模式——3、工厂模式
java23种设计模式——4、原型模式
java23种设计模式——5、建造者模式
java23种设计模式——6、适配器模式java

介绍

适配器模式(Adapter Pattern)是做为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。git

这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,如今咱们不少手机没有了耳机的插孔,只留下了type-c的插口,若是咱们想使用有线耳机的话就要买一个耳机转type-c的转换器github

在这里插入图片描述

应用场景

系统须要使用现有的类,而此类的接口不符合系统的须要。
想要创建一个能够重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在未来引进的类一块儿工做,这些源类不必定有一致的接口。
经过接口转换,将一个类插入另外一个类系中。设计模式

优缺点

  • 优势

一、可让任何两个没有关联的类一块儿运行。bash

二、提升了类的复用。ide

三、增长了类的透明度。this

四、灵活性好。设计

  • 缺点

一、过多地使用适配器,会让系统很是零乱,不易总体进行把握。好比,明明看到调用的是 A 接口,其实内部被适配成了 B 接口的实现,一个系统若是太多出现这种状况,无异于一场灾难。所以若是不是颇有必要,能够不使用适配器,而是直接对系统进行重构。code

2.因为 JAVA 至多继承一个类,因此至多只能适配一个适配者类,并且目标类必须是抽象类

模式实现

适配器模式有以下三个个角色:

  • 源(Adaptee):目标抽象类定义客户所需接口,能够是一个抽象类或接口,也能够
    是具体类,至关于typec线。
  • 适配器(Adapter):链接目标和源的中间对象,能够调用另外一个接口,做为一个转换器。至关于耳机转typec转换器。
  • 目标(Target):即被适配的角色,至关于手机。

首先咱们有一个手机类,有一个typec接口默承认以充电

/**
 * @author codermy
 * @createTime 2020/7/25
 */
public class Phone {
    public String throwTypec(){
        System.out.println("使用了typec接口");
        return "充电";
    }
}

有一个耳机能够放音乐

/**
 * @author codermy
 * @createTime 2020/7/25
 */
public interface Headset {
    String music();
}

如今买了一个转换器可让有线耳机连接手机

/**
 * @author codermy
 * @createTime 2020/7/25
 * 转换器
 */
public class Converter implements Headset {
    
    private Phone phone;

    public Converter(Phone phone){
        this.phone = phone;
    }

    @Override
    public String music() {
        String s = phone.throwTypec();
        System.out.println(String.format("%s  --------------  > %s",s,"听歌"));
        return "听歌";
    }
}

用户使用转接器

/**
 * @author codermy
 * @createTime 2020/7/25
 */
public class Client {
    public static void main(String[] args) {
        Phone phone = new Phone();
        Headset headset = new Converter(phone);
        headset.music();
    }
}

输出

使用了typec接口
充电  --------------  > 听歌
相关文章
相关标签/搜索