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 至多继承一个类,因此至多只能适配一个适配者类,并且目标类必须是抽象类。
适配器模式有以下三个个角色:
首先咱们有一个手机类,有一个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接口 充电 -------------- > 听歌