全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Java经典设计模式之适配器模式原理与用法详解

本文实例讲述了Java经典设计模式之适配器模式。分享给大家供大家参考,具体如下:

适配器模式是把一个类的接口适配成用户所期待的,使得原本由于接口不兼容而不能一起工作的一些类可以在一起工作从而实现用户所期望的功能。

适配器模式的优势:

1. 通过适配器,客户端可以调用统一接口,操作简单直接,并且代码逻辑紧凑,使用起来方便。
2. 代码复用,适配器模式就是解决因为环境要求不相同 的问题,通过适配实现代码复用。
3. 将目标类和适配器类解耦,通过新建一个适配器类来重用现在的类,不用再去重复修改原有代码,实现开闭原则。

共有两类适配器模式

1.对象适配器模式: 在这种适配器模式中,适配器容纳一个它包裹的类的实例。在这种情况下,适配器调用被包裹对象的物理实体。
2. 类适配器模式: 这种适配器模式下,适配器继承自已实现的类(一般多重继承)。

示例代码:

/**
* @description:
* 原有的接口功能,比如是给电动车充电功能
*/
public interface FirstBaseIf {
void charging();//充电
}
/**
* 要实现的操作功能
* @description:
*/
public class NewFunction {
public void powerWithTwo(){
System.out.println(“新功能:给电动汽车也可以充电啦”);
}
}
/**
*新建适配器类,来实现对原有接口FirstBaseIf的操作使用
* @description:
*/
public class FunctionAdapter implements FirstBaseIf {
private NewFunction plug;
public FunctionAdapter(NewFunction plug){
this.plug=plug;
}
@Override
public void charging() {//重写原有接口中的方法,从而实现接口转化
System.out.println(“通过适配器转化”);
plug.powerWithTwo();
}
}
//——–测试代码——————-
public class Test {
private FirstBaseIf plug;
public Test(FirstBaseIf plug) {
  this.plug = plug;
}
public static void main(String[] args) {
  NewFunction two = new NewFunction();
  FirstBaseIf three = new FunctionAdapter(two);//这里就是通过适配器实现转换
  Test note = new Test(three);
  note.charge();
}
public void charge() {
  plug.charging();//使用原有接口中的功能
}
}

运行结果:

适用场景:

在Java程序中,如果一个抽象类或者接口的话,就必须要重写所有的抽象方法。

那么,如果一个接口中定义的抽象方法过多,而子类中很多抽象方法又不需要用到,就应该设计一个适配器。通过Java语言进行的Android开发中,就经常会用到适配器模式。

更多java相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。


# Java  # 设计模式  # 适配器模式  # Java 设计模式之适配器模式详解  # 深入理解Java设计模式之适配器模式  # Java设计模式--适配器模式详解  # 详解JAVA设计模式之适配器模式  # java中设计模式之适配器模式  # java 设计模式之适配器模式的详解  # Java设计模式之适配器模式的示例详解  # 重写  # 复用  # 操作技巧  # 相关内容  # 感兴趣  # 数据结构  # 给大家  # 在这种  # 又不  # 再去  # 来实现  # 在这种情况下  # 经常会  # 所述  # 两类  # 程序设计  # 新建一个  # 类中  # 不兼容  # 客户端 


相关文章: 如何用景安虚拟主机手机版绑定域名建站?  建站之星北京办公室:智能建站系统与小程序生成方案解析  网页设计与网站制作内容,怎样注册网站?  网站微信制作软件,如何制作微信链接?  建站之星安装后如何配置SEO及设计样式?  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  已有域名能否直接搭建网站?  Android自定义listview布局实现上拉加载下拉刷新功能  ,有什么在线背英语单词效率比较高的网站?  C#如何在一个XML文件中查找并替换文本内容  制作网站外包平台,自动化接单网站有哪些?  天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?  建站之星如何快速解决建站难题?  如何通过西部建站助手安装IIS服务器?  微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?  建站主机核心功能解析:服务器选择与网站搭建流程指南  网站制作新手教程,新手建设一个网站需要注意些什么?  建站VPS推荐:2025年高性能服务器配置指南  浅谈Javascript中的Label语句  如何获取上海专业网站定制建站电话?  如何快速生成高效建站系统源代码?  在线制作视频的网站有哪些,电脑如何制作视频短片?  建站主机是什么?如何选择适合的建站主机?  建站之星代理如何获取技术支持?  台州网站建设制作公司,浙江手机无犯罪记录证明怎么开?  如何通过远程VPS快速搭建个人网站?  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  如何批量查询域名的建站时间记录?  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  如何解决VPS建站LNMP环境配置常见问题?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  郑州企业网站制作公司,郑州招聘网站有哪些?  长沙企业网站制作哪家好,长沙水业集团官方网站?  定制建站价位费用解析与套餐推荐全攻略  建站之星微信建站一键生成小程序+多端营销系统  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  如何快速上传自定义模板至建站之星?  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  家庭建站与云服务器建站,如何选择更优?  建站之星价格显示格式升级,你的预算足够吗?  建站主机与虚拟主机有何区别?如何选择最优方案?  如何用5美元大硬盘VPS安全高效搭建个人网站?  如何彻底删除建站之星生成的Banner?  广东专业制作网站有哪些,广东省能源集团有限公司官网?  零基础网站服务器架设实战:轻量应用与域名解析配置指南  如何高效搭建专业期货交易平台网站?  成都响应式网站开发,dw怎么把手机适应页面变成网页?  如何在云主机快速搭建网站站点?  如何解决ASP生成WAP建站中文乱码问题? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。