`
blues1021
  • 浏览: 142402 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
社区版块
存档分类
最新评论

Adapter适配器模式-java设计模式6(结构型模式)

 
阅读更多

Adapter适配器模式: 编写能够和不同接口的类进行通信 ,为调用类提供统一适配器接口的类( 也可以是只简单实现了接口的类如:API中各种事件Adapter )。可能要求此构造类为不同调用类裁剪出不同的构造方法。

实现这种要求有两种方法:1.继承。2.对象组合。

一:继承实现适配器从一个非一致的类派生一个新类, 增加新的方法 使派生类与所需接口匹配。

示例:编写一个在两个列表间add(),remove数据项的小程序。在Java API中javax.swing.JList没有add(),getSelectedItems(),remove()方法,但是在java.awt.List中有这样的方法。要构造一个支持上述两个类功能的适配器,以供调用适配器的类使用,当然想到继承方法;但是因为java中不支持多重继承,所以定义一个需要List的方法的接口,然后继承类JList即可,此时要在这样的适配器类中重写需要的List类的方法。下面是实现的UML类图:

List里面的方法被声明到了AwtList中,其中JTwoClassList为应用类,调用了JClassAwtList类(适配器类),这样就可以让JTwoClassList类能够使用JList里面的方法,也可以调用AwtList接口的方法;从而将JClassAwtList看作一个适配器类。随便说明一下,为了实现多继承,除了内部类或接口定义,还有一种很常用且强大的解决方法: 可以创建一个类来继承(extends)某个类并且实现(implements)另一个类的方法.如上图中的JClassAwtList.

 

二、 对象适配器 ,在新类中包含最初的类,并创建方法来解释新类中的调用 。下面是创建一个包含了JList类和List类的适配器JawtList类。UML类图如下:

两种方式的区别:

 1.类适配器

  (1)当想要适配一个类及其全部子类时不起作用,这是因为在创建该类时要定义派生它的类。

(2)允许适配器改变被适配类的一些方法,不过仍允许其他方法不做改动即可使用。

2.对象适配器

(1)只有将子类作为构造函数的部分传入(组合),则可使其得到适配。

(2)要求将所有要置为可用的任何被适配对象的方法予以公开(以供使用类使用)。

 

扩展: 1.双向适配器,双向适配器是一个很有技巧的概念,它允许一个对象被不同的类视作 AwtList 类或者JList类,可以通过上面的类适配器实现。因为 AwtList 类和JList类没有任何共同的方法,非常适合,可以同样方便地引用AwtList或JList中的方法,并把该对象处理为其中的一个实例。

2.插件适配器,插件适配器可以动态地适配多个类中的一个,当然只能适配到它可以识别的类,当然也可以用java中提供的反射(reflection)查找适配类的公共的方法名和参数。如:

public class showMethods
{
   public showMethods()
   {
      JList list = new JList();
      Method[] methods = list.getClass().getMethods();
      for (int i = 0; i < methods.length; i++)
      {
         System.out.println(methods[i].getName());
         Class cl[] = methods[i].getParameterTypes();
         for(int j=0; j < cl.length; j++)
            System.out.println(cl[j].toString());
      }
   }
   static public void main(String argv[])
   {
      new showMethods();
   }
}

 即可以将JList类的公共方法名和它的参数信息输出。然后通过不同的构造函数或setParameter方法来决定它将适配哪一个类,很可能要使用多个构造函数中的一个来调用适配器,每个构造函数应该针对希望适配的特定类进行裁剪。

3.也可以是只简单实现了接口的类如:API中各种事件Adapter。响应事件的匿名内部类的写法也是适配器调用的一种方式。如:

addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e)
{System.exit(0);}
});

 

 


分享到:
评论

相关推荐

    java设计模式之适配器模式

    适配器模式是一种在软件工程中广泛使用的结构型设计模式,它允许两个不兼容的接口之间进行通信。在Java中,适配器模式扮演着重要的角色,尤其在处理遗留代码或者第三方库集成时,能够有效地解决接口不匹配的问题。...

    [结构型模式] 适配器模式的理解

    适配器模式是一种结构型设计模式,它允许不兼容的接口之间进行通信,通过创建一个适配器对象作为中间桥梁,使得原本不匹配的接口能够协同工作。在软件开发中,适配器模式的应用十分广泛,尤其是在处理遗留系统或者...

    Python 程序语言设计模式思路-结构型模式:适配器模式-将不兼容的接口转换为可兼容的接口

    适配器模式(Adapter Pattern)是一种结构型设计模式,旨在将一个类的接口转换为客户端期望的另一个接口,从而使原本由于接口不兼容而无法一起工作的类能够协同工作。适配器模式通过引入一个适配器类,解决了接口不...

    C#面向对象设计模式纵横谈\7 结构型模式Adapter 适配器模式.zip

    在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均不需要... 这是第7节:结构型模式Adapter 适配器模式

    c++设计模式-结构型模式-适配器模式

    c++设计模式-结构型模式-适配器模式,其他工程,c++源码。适配器模式(Adapter)的定义如下:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。

    C#面向对象设计模式纵横谈(7):Adapter 适配器模式(结构型模式)

    C#面向对象设计模式纵横谈(7):Adapter 适配器模式(结构型模式) 体验课程

    java常用设计模式-适配器模式

    适配器模式(Adapter Pattern)是一种结构型设计模式,它允许不兼容的接口之间进行通信。这种模式可以在不修改现有代码的情况下重用现有类,并且可以使不兼容的接口之间进行通信。 适配器模式的定义 适配器模式是...

    讲故事,学(Java)设计模式-适配器模式Java开发Ja

    适配器模式是一种结构型设计模式,它的主要目的是使不兼容的接口之间能够进行通信。在这个“讲故事,学(Java)设计模式—适配器模式”的主题中,我们将深入探讨这个模式的原理、应用和优势。 适配器模式的核心思想...

    C#面向对象设计模式纵横谈(7):Adapter 适配器模式(结构型模式) (Level 300)

    适配器模式是一种在软件设计中广泛使用的结构型设计模式,它允许两个不兼容的接口之间进行通信。在C#编程环境中,适配器模式扮演着重要的角色,尤其是在需要将已有类库或组件与新系统集成时。适配器模式通过创建一个...

    设计模式-Java语言中的应用(pdf)

    结构型模式如适配器(Adapter)、装饰器(Decorator)、代理(Proxy)、桥接(Bridge)和组合(Composite),则关注如何将不同组件组合成更复杂的结构,以实现新的功能。行为型模式如策略(Strategy)、观察者...

    PHP设计模式(五)适配器模式Adapter实例详解【结构型】

    适配器模式(Adapter Pattern)是一种结构型设计模式,它主要解决的是接口不兼容的问题,使得原本由于接口差异无法一起工作的类能够协同工作。在PHP中,适配器模式通过创建一个包装类(适配器类)来转换不兼容的接口...

    2 适配器模式-MOOC课程内容.pdf

    适配器模式是软件开发中常见的一种设计模式,属于结构型设计模式。它允许将一个类的接口转换为另一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。适配器模式可以分为两种:类适配器和对象...

    Java设计模式之适配器模式

    适配器模式是一种结构型设计模式,它允许两个不兼容的接口能够协同工作。本文将深入探讨适配器模式的原理、分类以及在Java中的实现方式。 #### 适配器模式的基本原理 适配器模式的核心在于创建一个新的类(适配器...

    Java设计模式适配器模式代码架构

    Java设计模式中的适配器模式(Adapter Pattern)是一种结构型设计模式,它的主要目的是将不兼容的接口转换为用户期望的接口,使原本由于接口不兼容而无法一起工作的类能够协同工作。适配器模式有两种形式:类适配器...

    PHP5设计模式-适配器模式实现

    适配器模式是一种结构型设计模式,它的主要目的是使不兼容的接口能够协同工作。在实际开发中,我们可能会遇到这样的情况:一个类库或者服务提供了一个接口,而我们的代码需要使用另一个接口。适配器模式就充当了两者...

    设计模式实验报告-适配器模式.docx

    适配器模式(Adapter Pattern)是一种结构型设计模式,其主要目的是将一个类的接口变换成客户端所期待的另一种接口。通过这种方式,原本由于接口不兼容而无法一起工作的类可以顺利合作。适配器模式有两种实现方式:...

    【Java设计模式-源码】Java 中的适配器模式:无缝集成不兼容系统

    在 Java 开发中,适配器模式(Adapter Pattern)是一种非常有用的结构型设计模式,它可以帮助我们解决接口不兼容的问题,实现不同类之间的无缝集成。本文将详细介绍适配器模式的意图、解释、编程示例、适用场景、...

    设计模式结构型-适配器

    ### 设计模式结构型-适配器 #### 概述 设计模式是一种在特定情境下解决软件设计问题的模板,通常被用来简化复杂系统的构建和维护。设计模式分为三种类型:创建型、行为型和结构型。其中,结构型设计模式关注于如何...

    Java设计模式之Adapter适配器模式

    Java设计模式之Adapter适配器模式是一种结构型设计模式,主要用于解决不同接口之间的不兼容问题,使得原本由于接口不兼容不能一起工作的那些类可以一起工作。Adapter模式的主要作用是,继承现有的类,通过实现接口,...

Global site tag (gtag.js) - Google Analytics