全网整合营销服务商

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

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

java设计模式之适配器模式(Adapter)

概述

将一个类的接口转换成用户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。

两种实现方式

1.类的适配器模式:
2.对象的适配器模式:

类的适配器模式的UML图,如下:

类的适配器模式把适配的类的API转换成为目标类的API。

上图设计的角色有:

目标角色(Target):这就是所期待得到的接口。
源角色(Adapee):现在需要适配的接口。
适配器角色(Adapter):是本模式的核心,适配器把源接口转换成目标接口。

代码示例:

interface Target{
  void method1();
  void method2(); //期待得到该方法
}
//源类中不具备method2中的方法。
class Adaptee{
  public void method1(){
    System.out.println("method1");
  }
}

class Adapter extends Adaptee implements Target{

  @Override
  public void method2() {
    System.out.println("this is target method");
  }

}

public class MainTest {

  public static void main(String arg[]) {
    Target target = new Adapter();
    target.method2();
  }
}

对象的适配器模式的UMl图,如下:

核心思路与类的适配器模式相同,只是将Adapter类修改,不继承Adaptee类,而是持有Adaptee类的引用。代码如下:

interface Target{
  void method1();
  void method2();
}

class Adaptee{
  public void method1(){
    System.out.println("method1");
  }
}

class Adapter implements Target{

  private Adaptee adaptee;

  public Adapter(Adaptee adaptee){
    this.adaptee = adaptee;
  }

  @Override
  public void method2() {
    System.out.println("this is target method");
  }

  @Override
  public void method1() {
    // TODO Auto-generated method stub
    adaptee.method1();
  }

}

public class MainTest {

  public static void main(String arg[]) {
    Target target = new Adapter(new Adaptee());
    target.method2();
  }
}

适配器模式的优缺点:
更好的复用性,更好的扩展性。系统需要使用现有的类,而此类的接口不符合系统的需要,那么通过适配器模式就可以让这些功能得到更好的复用。在实现适配器功能的时候,可以调用自己开发的功能,从而自然地扩展系统的功能。
缺点:过多的使用适配器,会让系统非常凌乱,不易整体把握。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# java  # 适配器模式  # Adapter  # Java设计模式--适配器模式详解  # Java中的适配器模式详解  # 详解Java适配器模式  # Java设计模式中的适配器模式详解  # Java设计模式之适配器模式简介  # java设计模式之适配器模式  # 详解Java实践之适配器模式  # Java适配器模式之如何灵活应对不匹配的接口  # 转换成  # 复用  # 这就是  # 两种  # 会让  # 此类  # 不符合  # 另外一个  # 不具备  # 自然地  # 大家多多  # 到该  # 就可以  # 上图  # 类中  # 不兼容  # jfx  # interface  # brush  # UML 


相关文章: 建站主机助手选型指南:2025年热门推荐与高效部署技巧  如何在服务器上三步完成建站并提升流量?  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】  官网建站费用明细查询_企业建站套餐价格及收费标准指南  网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?  建站主机选择指南:服务器配置与SEO优化实战技巧  制作旅游网站html,怎样注册旅游网站?  公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?  盐城做公司网站,江苏电子版退休证办理流程?  如何在腾讯云服务器上快速搭建个人网站?  大连网站制作公司哪家好一点,大连买房网站哪个好?  如何在Windows 2008云服务器安全搭建网站?  c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】  南宁网站建设制作定制,南宁网站建设可以定制吗?  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  Thinkphp 中 distinct 的用法解析  如何用VPS主机快速搭建个人网站?  网站插件制作软件免费下载,网页视频怎么下到本地插件?  如何选择建站程序?包含哪些必备功能与类型?  网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?  小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建  宝塔面板创建网站无法访问?如何快速排查修复?  网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?  如何快速生成可下载的建站源码工具?  详解jQuery停止动画——stop()方法的使用  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  如何确认建站备案号应放置的具体位置?  股票网站制作软件,网上股票怎么开户?  陕西网站制作公司有哪些,陕西凌云电器有限公司官网?  C++如何使用std::optional?(处理可选值)  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  建站主机默认首页配置指南:核心功能与访问路径优化  广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?  广平建站公司哪家专业可靠?如何选择?  企业网站制作公司网页,推荐几家专业的天津网站制作公司?  如何用wdcp快速搭建高效网站?  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  ,sp开头的版面叫什么?  c# Task.ConfigureAwait(true) 在什么场景下是必须的  如何零基础开发自助建站系统?完整教程解析  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何在云主机上快速搭建网站?  微课制作网站有哪些,微课网怎么进?  如何在阿里云通过域名搭建网站?  建站之星后台管理系统如何操作?  ,南京靠谱的征婚网站?  免费公司网站制作软件,如何申请免费主页空间做自己的网站?  如何在IIS中新建站点并解决端口绑定冲突? 

您的项目需求

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