Java适配器模式定义与用法示例

发布时间 - 2026-01-11 01:46:02    点击率:

本文实例讲述了Java适配器模式定义与用法。分享给大家供大家参考,具体如下:

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

适配器一共包括3种角色

1、目标:目标是一个接口,该接口是客户想使用的接口

2、被适配者:被适配者是一个已存在的接口或抽象类,这个接口或抽象类需要适配

3、适配器:适配器是一个类,该类实现了目标接口并包含有被适配者的引用,即适配者的指着是对被适配者接口与目标进行适配

package org.zhy.adapter;
/**
 * 目标
 * @author zhengyi
 *
 */
public interface ThreeElectricOutlet {
  //用来刻画三相插座
  public abstract void connectElectricCurrent();
}

package org.zhy.adapter;
/**
 * 适配器
 * @author zhengyi
 *
 */
public class TreeElecricAdapter implements ThreeElectricOutlet {
  TwoElectricOutlet outlet;
  public TreeElecricAdapter(TwoElectricOutlet teo) {
    this.outlet=teo;
  }
  @Override
  public void connectElectricCurrent() {
    outlet.connectElectricCurrent();
  }
}

package org.zhy.adapter;
/**
 * 被适配者
 * @author zhengyi
 *
 */
public interface TwoElectricOutlet {
  //刻画两相插座
  public abstract void connectElectricCurrent();
}

package org.zhy.adapter;
public class Appliction {
  public static void main(String[] args) {
    ThreeElectricOutlet outlet; //目标接口三相插座
    Wash wash=new Wash();
    outlet=wash;
    System.out.println("使用三相插座接通电流");
    outlet.connectElectricCurrent();
    Tv tv=new Tv();
    TreeElecricAdapter adapter=new TreeElecricAdapter(tv);
    outlet= adapter;
    System.out.println("使用三相插座接通电流");
    outlet.connectElectricCurrent();
  }
}

package org.zhy.adapter;
/**
 * 洗衣机
 * @author zhengyi
 *
 */
public class Wash implements ThreeElectricOutlet {
  private String name;
  public Wash() {
    name="洗衣机";
  }
  public Wash(String name){
    this.name=name;
  }
  @Override
  public void connectElectricCurrent() {
    turnOn();
  }
  private void turnOn(){
    System.out.println(name+"开始洗衣服");
  }
}

package org.zhy.adapter;
/**
 * 电视
 * @author zhengyi
 *
 */
public class Tv implements TwoElectricOutlet {
  private String name;
  public Tv() {
    name="长江电视机";
  }
  public Tv(String s){
    this.name=s;
  }
  @Override
  public void connectElectricCurrent() {
    turnOn();
  }
  private void turnOn(){
    System.out.println(name+"开始播放节目");
  }
}

适配器的适配程度

1、完全适配

如果目标接口中的方法数目与被适配者接口的方法数目相等那么适配器可将被适配者接口与目标接口进行完全适配

2、不完全适配

如果目标接口中的方法数目少于被适配者接口的方法数目那么适配器只能将被适配者接口与目标接口进行适配

3、剩余适配

如果目标接口中的方法数目大于被适配者接口的方法数目。那么适配器可将被适配者接口与目标接口进行完全适配,但必须将目标多余的方法给出用户允许默认实现

适配器模式的优点

1、目标和适配者是完全解耦的关系

2、适配器模式满足“开-闭原则”当添加一个实现Adaptee接口的新类时,不必修改Adaptee,而Adaptee就能对这个新类的实例进行适配

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

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


# Java  # 适配器模式  # 详解Java适配器模式  # Java适配器模式应用之电源适配器功能详解  # Java设计模式之Adapter适配器模式  # 23种设计模式(5) java适配器模式  # Java经典设计模式之适配器模式原理与用法详解  # java设计模式之适配器模式(Adapter)  # Java Adapter 适配器模式(类适配器  # 对象适配器)优缺点对比  # 实例解析Java设计模式编程中的适配器模式使用  # 详解Java实践之适配器模式  # 是一个  # 将被  # 操作技巧  # 相关内容  # 抽象类  # 感兴趣  # 长江  # 数据结构  # 给大家  # 不完全  # 转换成  # 能对  # 所述  # 程序设计  # 洗衣服  # 不兼容  # 两相  # 实现了  # 讲述了  # 即适配者 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 焦点电影公司作品,电影焦点结局是什么?  今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】  如何在香港服务器上快速搭建免备案网站?  linux写shell需要注意的问题(必看)  Laravel如何使用模型观察者?(Observer代码示例)  PythonWeb开发入门教程_Flask快速构建Web应用  Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  详解CentOS6.5 安装 MySQL5.1.71的方法  深入理解Android中的xmlns:tools属性  如何在腾讯云免费申请建站?  Laravel DB事务怎么使用_Laravel数据库事务回滚操作  浅谈redis在项目中的应用  如何在Windows服务器上快速搭建网站?  Laravel怎么使用artisan命令缓存配置和视图  Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】  Laravel如何实现密码重置功能_Laravel密码找回与重置流程  Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复  猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】  Android自定义控件实现温度旋转按钮效果  html如何与html链接_实现多个HTML页面互相链接【互相】  如何用VPS主机快速搭建个人网站?  Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】  如何用花生壳三步快速搭建专属网站?  无锡营销型网站制作公司,无锡网选车牌流程?  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  如何快速搭建高效可靠的建站解决方案?  高端云建站费用究竟需要多少预算?  Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID  用yum安装MySQLdb模块的步骤方法  大连 网站制作,大连天途有线官网?  微信小程序 wx.uploadFile无法上传解决办法  Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程  1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  原生JS获取元素集合的子元素宽度实例  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  长沙做网站要多少钱,长沙国安网络怎么样?  Android GridView 滑动条设置一直显示状态(推荐)  bing浏览器学术搜索入口_bing学术文献检索地址  html文件怎么打开证书错误_https协议的html打开提示不安全【指南】  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  Laravel如何配置Horizon来管理队列?(安装和使用)  青岛网站建设如何选择本地服务器?  详解Android图表 MPAndroidChart折线图  EditPlus 正则表达式 实战(3)  Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权  如何快速搭建高效WAP手机网站吸引移动用户?  详解vue.js组件化开发实践