文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java中适配器模式的示例分析

2023-06-03 00:59

关注

小编给大家分享一下Java中适配器模式的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

Java程序设计模式系列之适配器模式

理解适配器设计模式需要从生活中的场景进行联系,在生活当中有那些东西能够称为适配器呢?从字面上理解,“适配”的意思就是让一个东西和另一个东西配对,能够让他们一起工作,比如大家用的笔记本电脑就需要用到电源适配器,转换插口和电流到笔记本上给笔记本电脑进行供电。再比如在国内所有的电器插座都是两口或三口的国内标准插座,但如果到中国大陆以外的地区旅行,想要使用电源给电子产品供电,就需要转换插口了。比如王老师到了香港,看到的电源插座是这样的:

Java中适配器模式的示例分析

很明显,从国内带去的手机就无法充电了。

那么这个问题怎么解决呢?

Java中适配器模式的示例分析 

经过查找资料,王老师找到了一种产品,它就是长成这个样子的东东,叫“电源适器”。

用法相信大家一看就清楚了。

有个它,妈妈再也不用担心我担心我没有电了。

“哦!我知道了,这不是个转换口吗?”是的,其实跟读卡器的概念是一样的,就是将原本不能用的接口经过适配器转换成能用的接口。

概念:

适配器模式(Adapter):将一个类的接口,转换成客户希望的另一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

“还是没读懂!”不要紧,下面简单易懂的案例+代码,让你明白什么是适配器模式。

Java中适配器模式的示例分析 

接下来我们就以电源这个案例来介绍适配器模式:

这里有两个不兼容的接口,电源A接口和电源B接口,并且有各自相应的实现方法。代码如下:

Java中适配器模式的示例分析 

Java中适配器模式的示例分析 

那么两个接口应该有各自的实现类,代码如下:

Java中适配器模式的示例分析Java中适配器模式的示例分析 

接下来就应该是客户端来调用了,先定义电源A开始工作方法:

Java中适配器模式的示例分析 

那么想要调用start方法就需要传入PowerA的实现类对象了。

所以这里我们创建一个PowerAImpl对象,并且调用start方法。

Java中适配器模式的示例分析 

编译后运行的结果是这样滴:

Java中适配器模式的示例分析 

我们这里已经写好了,如果这时我们想传PowerB接口到start方法可以吗?怎么办呢?

那么此时我们有两种办法来实现,第一种:

Java中适配器模式的示例分析 

再添加一个startB方法,但这不是一个好的解决方案,因为在startA中调用insert方法的前后我们可能存在一些逻辑以及业务,同样的在startB中调用connect方法的前后可能存在这些相同的逻辑及业务,就只有connect方法调用这一句不同,那么重写一份就是多余的了,代码重复了。不太符合我们面向对象的编程思想,怎么办呢?往下看。

Java中适配器模式的示例分析 

接下来看第二种解决方案:我们还是想用一个start方法解决这个问题,到这里会有人想到直接把start方法改成适应两个接口的,王老师在此处需要先给大家说明一个问题了,面向对象的编程原则中有一点非常重要的是“对修改关闭,对扩展开放”,如果我们的程序已经上线运行,当时并没有考虑要传PowerB接口进来,只传PowerA接口就好了,但现在业务修改要求也可以传PowerB接口,那么修改方法将对其他已写好的程序造成怎样的影响也是未知的,可能其他小伙伴调用了你的start方法就会出问题了,也就是说调用了你的start方法的代码都会有连锁反应了。OK!看下面!

我们需要实现这样的东东

Java中适配器模式的示例分析 

很显然这样的代码编译是不会通过的,因为目前PowerA和PowerB本来就是两个不同的接口,相当于一个三口的插座和一个两口的根本插不进入是一样的。

要想实现转换,现在需要适配器啦!我们需要把PowerB转换成PowerA传进来,那么我们就给PowerA做一个适配器。Java中适配器模式的示例分析

首先要适配的是PowerA,所以实现PowerA接口,那么PowerAAdapter就可以作为PowerA的实现类传进start方法了。

我们是要用这个适配器将PowerB转成PowerA,那么就需要和PowerB取得联系,所以定义一个PowerB作为属性,并通过构造方法进行初始化操作。

实现了PowerA接口需要重写其方法,那么在重写的insert方法中调用PowerB的connect方法,适配器就写好了。

现在来测试一下:

Java中适配器模式的示例分析 

编译之后运行结果是这样滴:

Java中适配器模式的示例分析 

结果说明PowerB接口的实现类开始工作了,但传参数的时候是通过PowerA接口的形式传进来进行工作的。这就是神奇的适配器模式啦!

按照步骤敲一敲代码!更有助于理解!

以上是“Java中适配器模式的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯