全网整合营销服务商

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

免费咨询热线: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设计模式之适配器模式的示例详解  # 重写  # 复用  # 操作技巧  # 相关内容  # 感兴趣  # 数据结构  # 给大家  # 在这种  # 又不  # 再去  # 来实现  # 在这种情况下  # 经常会  # 所述  # 两类  # 程序设计  # 新建一个  # 类中  # 不兼容  # 客户端 


相关文章: 如何用IIS7快速搭建并优化网站站点?  如何通过.red域名打造高辨识度品牌网站?  网站制作公司排行榜,抖音怎样做个人官方网站  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  如何在建站宝盒中设置产品搜索功能?  如何用y主机助手快速搭建网站?  Python文件管理规范_工程实践说明【指导】  建站之星好吗?新手能否轻松上手建站?  建站主机选哪种环境更利于SEO优化?  红河网站制作公司,红河事业单位身份证如何上传?  如何快速搭建自助建站会员专属系统?  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  在线教育网站制作平台,山西立德教育官网?  深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?  网站app免费制作软件,能免费看各大网站视频的手机app?  小型网站建站如何选择虚拟主机?  高端企业智能建站程序:SEO优化与响应式模板定制开发  天津个人网站制作公司,天津网约车驾驶员从业资格证官网?  如何通过虚拟主机快速搭建个人网站?  建站主机选购指南:核心配置优化与品牌推荐方案  详解jQuery中基本的动画方法  如何通过VPS建站无需域名直接访问?  如何解决ASP生成WAP建站中文乱码问题?  如何在云指建站中生成FTP站点?  c# 在高并发下使用反射发射(Reflection.Emit)的性能  建站之星CMS五站合一模板配置与SEO优化指南  c++怎么用jemalloc c++替换默认内存分配器【性能】  行程制作网站有哪些,第三方机票电子行程单怎么开?  音响网站制作视频教程,隆霸音响官方网站?  如何在腾讯云免费申请建站?  模具网站制作流程,如何找模具客户?  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  ,怎么用自己头像做动态表情包?  如何获取免费开源的自助建站系统源码?  如何基于云服务器快速搭建网站及云盘系统?  用v-html解决Vue.js渲染中html标签不被解析的问题  网站设计制作公司地址,网站建设比较好的公司都有哪些?  独立制作一个网站多少钱,建立网站需要花多少钱?  建站之星安装失败:服务器环境不兼容?  怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?  定制建站价位费用解析与套餐推荐全攻略  如何在阿里云虚拟主机上快速搭建个人网站?  无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?  如何快速辨别茅台真假?关键步骤解析  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  如何选择域名并搭建高效网站?  定制建站流程步骤详解:一站式方案设计与开发指南  我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?  如何通过PHP快速构建高效问答网站功能?  深圳 网站制作,深圳招聘网站哪个比较好一点啊? 

您的项目需求

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