Java模式(适配器模式)

Java模式(适配器模式)

今天看了下Java中的适配器模式,下面就来小做下总结和谈谈感想,以便日后使用。

 

首先,先来先讲讲适配器。适配就是由“源”到“目标”的适配,而其中链接两者的关系就是适配器。它负责把“源”过度到“目标”。举个简单的样例,比方有一个“源”是一个对象人,他拥有2种技能各自是说日语和说英语,而某个岗位(目标)须要你同一时候回说日语、英语、和法语,好了,如今我们的任务就是要将人这个“源”适配的这个岗位中,怎样适配呢?显而易见地我们须要为人加入�一个说法语的方法,这样才干满足目标的须要。

 

接着讨论怎样加说法语这种方法,或许你会说,为什么不直接在“源”中直接加入�方法,我的理解是,适配是为了实现某种目的而为一个源类临时性的加上某种方法,所以不能破坏原类的结构。同一时候不这么做也符合Java的高内聚,低耦合的原理。既然不能直接加,接着我们就来说该怎么来实现为人这个“源”加入�一个方法,而又不破坏“源”的本身结构。

 

适配器模式有2种,第一种是“面向类的适配器模式”,另外一种是“面向对象的适配器模式”。

 

先说“面向类的适配器模式”。顾名思义,这类适配器模式就是主要用于,单一的为某个类而实现适配的这样一种模式,为什么说仅仅为某个类去实现,一会提到,我们先展示这样的类适配模式的代码实现。

 

源的代码例如以下:

 

 目标接口的代码例如以下:

 适配器的代码例如以下:

 

好了,代码看完然后要做一些说明了,之前遗留的一个问题,为什么称其为类适配模式呢?非常显然的,Adapter类继承了Person类,而在Java这样的单继承的语言中也就意味着,他不可能再去继承其它的类了,这样也就是这个适配器仅仅为Person这一个类服务。所以称其为类适配模式。

 

说完类的适配模式,我们要開始说第2种对象的适配器模式了。对象适配器模式是把“源”作为一个对象聚合到适配器类中。相同的话不多说,贴上代码:

 

源的代码以及目标代码同上,再次不再赘述。

仅贴出适配器代码:

 

对象的适配器模式,把“源”作为一个构造參数传入适配器,然后运行接口所要求的方法。这样的适配模式能够为多个源进行适配。弥补了类适配模式的不足。

 

如今来对2种适配模式做个分析:

1.类的适配模式用于单一源的适配,因为它的源的单一话,代码实现不用写选择逻辑,非常清晰;而对象的适配模式则可用于多源的适配,弥补了类适配模式的不足,使得原本用类适配模式须要写非常多适配器的情况不复存在,弱点是,因为源的数目能够较多,所以详细的实现条件选择分支比較多,不太清晰。

2.适配器模式主要用于几种情况:(1)系统须要使用现有的类,但现有的类不全然符合须要。(2)讲彼此没有太大关联的类引进来一起完毕某项工作(指对象适配)。

 

最后,再来顺带谈谈默认适配器模式:这样的模式的核心归结例如以下:当你想实现一个接口但又不想实现全部接口方法,仅仅想去实现一部分方法时,就用中默认的适配器模式,他的方法是在接口和详细实现类中加入�一个抽象类,而用抽象类去空实现目标接口的全部方法。而详细的实现类仅仅须要覆盖其须要完毕的方法就可以。代码例如以下:

接口类:

抽象类: 

实现类:

 

好了,适配器模式就先讲到这了,希望对自己和大家都有一个提高。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119180.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • J2ME 开发工具

    J2ME 开发工具J2ME开发工具1.J2ME高级开发工具高级的MIDP应用程序开发工具能够帮助开发人员简化J2ME开发过程,包括Sun提供的官方开发工具WTK和手机厂商提供的专属SDK.J2MEWi

    2022年7月27日
    8
  • 实用技巧:利用Excel实现客户档案的统一管理「建议收藏」

    实用技巧:利用Excel实现客户档案的统一管理「建议收藏」背景:一个朋友新开了家门市,生意不错,客源旺盛。有次我们喝茶时,他透露一个问题,就是客户的档案管理很不理想,都是纸面的,很容易丢失,也不方便查找。我自诩混迹IT界多年,当然要替好友解决这个小麻烦。考虑到他的门市规模和店员能力,什么ERP、CRM之类的还是免了吧,朋友的要求也很直接,就是俩字:简单。这样的话确实简单了,EXCEL就可以搞定,而且使用门槛相当于零!喝完茶,基本思…

    2022年10月24日
    0
  • 渗透测试技术_Nessus工具(二) _漏洞扫描工具 Nessus的使用教程

    渗透测试技术_Nessus工具(二) _漏洞扫描工具 Nessus的使用教程漏洞扫描工具Nessus的使用教程1、Nessus使用教程1.1、Nessus登录在浏览器中访问:https://{服务器IP}:8834例如访问:https://10.1.1.191:8834/输入你注册的账号密码进行登录,例如:nessus_casb/liaxx,进入主页面。1.2、新建1个主机扫描1.2.1、点击右上角的”NewScan”新建一个扫描1.2.2、选择“BasicNetworkScan”,进行配置项目名称,对项目的描述,以及最重要的目标I.

    2022年10月18日
    0
  • Waiting for another flutter command to release the startup lock…

    Waiting for another flutter command to release the startup lock…

    2021年10月1日
    40
  • 求二叉树的最长路径_某完全二叉树按层次输出,从左到右

    求二叉树的最长路径_某完全二叉树按层次输出,从左到右Ural 大学有 N 名职员,编号为 1∼N。他们的关系就像一棵以校长为根的树,父节点就是子节点的直接上司。每个职员有一个快乐指数,用整数 Hi 给出,其中 1≤i≤N。现在要召开一场周年庆宴会,不过,没有职员愿意和直接上司一起参会。在满足这个条件的前提下,主办方希望邀请一部分职员参会,使得所有参会职员的快乐指数总和最大,求这个最大值。输入格式第一行一个整数 N。接下来 N 行,第 i 行表示 i 号职员的快乐指数 Hi。接下来 N−1 行,每行输入一对整数 L,K,表示 K 是 L 的直接

    2022年8月8日
    1
  • pytest运行_ios怎么清理应用缓存在哪里

    pytest运行_ios怎么清理应用缓存在哪里前言pytest运行完用例之后会生成一个.pytest_cache的缓存文件夹,用于记录用例的ids和上一次失败的用例。方便我们在运行用例的时候加上–lf和–ff参数,快速运行上一

    2022年7月28日
    13

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号