三句话搞定适配器模式

适配器模式的官方定义:

将一个与当前类无法兼容的接口转换成能够兼容当前类的接口。

适配器模式的大白话:

现在有一个第三方类/我们项目组中别人写的类放在我们面前,我们需要调用其中的功能,但是第三方类提供给我们的接口和我们程序的接口不相匹配,这时我们就需要再写一个适配器类,把第三方类不匹配的接口转换成能被我们程序调用的接口。

举个例子:

电源的电压是220V,而我们的笔记本需要的电压一般只要十几V,因此就需要一个电源适配器就将电源中220V的电压转换成笔记本所使用的电压。这个电源适配器就采用了适配器模式的思想。

电源就相当于需要被适配的类,笔记本就相当于调用接口的类,电源适配器就相当于适配器类。

适配器模式类图:

1.用户Client想调用Adaptee类中的一些功能,但发现接口与自己定义的接口不一致;

2.此时Client按照自己原本的要求将所需要的功能都写入接口Target中;

3.然后适配器类Adapter实现这个接口;

4.Adapter类必须要使Adaptee作为它的成员变量;

5.Adapter类在实现request函数时,通过成员变量Adaptee来调用Adaptee中specificRequest函数,从而实现了将Adaptee中的功能向Target所需的接口名字转化的过程。

6.Client只需要:

Target target = new Adapter();

target.request();

此时Client仍然调用自己规定的接口request(),但执行的已经是Adaptee中的specificRequest()的功能了。

何时使用适配器模式?

1.在软件开发后期或是开发结束之后,被调用的一些接口需要换掉,为了不需改已经开发好的代码,可以增加一个适配器,起到连接新接口和旧调用的桥梁。

PS:一般在软件设计、开发过程中,如果发现需要调用的接口和原本定义的接口不匹配,应尽量选择重构接口,而不是使用适配器作为转换。

2.在软件开发过程中,需要调用第三方类库的时候,如果第三方类库提供的接口和我们设计的接口不一致,此时可以使用适配器模式,将第三方类库的接口转换成我们所需要的接口。

总之一句话:在接口的调用和被调用双方都不太容易修改的时候再使用适配器模式。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Spring相关

第3章—高级装配—bean的作用域

单例是默认的作用域,但是正如之前所描述,对于易变的类型,这并不合适.如果选择其他作用域,要使用@Scope注解,他可以和@Component或@Bean一起使用...

632
来自专栏大闲人柴毛毛

高质量编程的金玉良言——开放-封闭原则

什么是“开放-封闭”原则? 软件的类、模块、函数等交付后,如果需要增加功能,不要去修改原来的代码,而是通过新增加类的方法去扩展功能。 所谓的“开放”就是指开放接...

36012
来自专栏智能合约

Phalcon入门教程之控制器

1083
来自专栏Java3y

包装模式就是这么简单啦

1514
来自专栏java 成神之路

Spring bean 标签加载、解析过程分析

2727
来自专栏更流畅、简洁的软件开发方式

.net Framework2.0 里面的Webcontrols的几个常用控件的继承树

      为了写好分页控件的自动绑定的功能,研究了一下几个控件的继承关系,目的就是为了看看DataSource到底是从哪里来的。 ?       层数还真是多...

1867
来自专栏SpringBoot

bootstrap-datepicker日期范围

实际应用中可能会根据日期字段查询某个日期范围内的数据,则需要对日期选择器可选时间进行限制,

631
来自专栏好好学java的技术栈

springmvc带你学:带你入门

传统MVC——>JSPModel2——>Front Controller + Application Controller + Page Controller ...

671
来自专栏web编程技术分享

js弹窗小例子

2638
来自专栏技术专栏

JsonView 使用方法

1012

扫码关注云+社区