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中,适配器模式扮演着重要的角色,尤其在处理遗留代码或者第三方库集成时,能够有效地解决接口不匹配的问题。...
适配器模式是一种结构型设计模式,它允许不兼容的接口之间进行通信,通过创建一个适配器对象作为中间桥梁,使得原本不匹配的接口能够协同工作。在软件开发中,适配器模式的应用十分广泛,尤其是在处理遗留系统或者...
适配器模式(Adapter Pattern)是一种结构型设计模式,旨在将一个类的接口转换为客户端期望的另一个接口,从而使原本由于接口不兼容而无法一起工作的类能够协同工作。适配器模式通过引入一个适配器类,解决了接口不...
在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均不需要... 这是第7节:结构型模式Adapter 适配器模式
c++设计模式-结构型模式-适配器模式,其他工程,c++源码。适配器模式(Adapter)的定义如下:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。
C#面向对象设计模式纵横谈(7):Adapter 适配器模式(结构型模式) 体验课程
适配器模式(Adapter Pattern)是一种结构型设计模式,它允许不兼容的接口之间进行通信。这种模式可以在不修改现有代码的情况下重用现有类,并且可以使不兼容的接口之间进行通信。 适配器模式的定义 适配器模式是...
适配器模式是一种结构型设计模式,它的主要目的是使不兼容的接口之间能够进行通信。在这个“讲故事,学(Java)设计模式—适配器模式”的主题中,我们将深入探讨这个模式的原理、应用和优势。 适配器模式的核心思想...
适配器模式是一种在软件设计中广泛使用的结构型设计模式,它允许两个不兼容的接口之间进行通信。在C#编程环境中,适配器模式扮演着重要的角色,尤其是在需要将已有类库或组件与新系统集成时。适配器模式通过创建一个...
结构型模式如适配器(Adapter)、装饰器(Decorator)、代理(Proxy)、桥接(Bridge)和组合(Composite),则关注如何将不同组件组合成更复杂的结构,以实现新的功能。行为型模式如策略(Strategy)、观察者...
适配器模式(Adapter Pattern)是一种结构型设计模式,它主要解决的是接口不兼容的问题,使得原本由于接口差异无法一起工作的类能够协同工作。在PHP中,适配器模式通过创建一个包装类(适配器类)来转换不兼容的接口...
适配器模式是软件开发中常见的一种设计模式,属于结构型设计模式。它允许将一个类的接口转换为另一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。适配器模式可以分为两种:类适配器和对象...
适配器模式是一种结构型设计模式,它允许两个不兼容的接口能够协同工作。本文将深入探讨适配器模式的原理、分类以及在Java中的实现方式。 #### 适配器模式的基本原理 适配器模式的核心在于创建一个新的类(适配器...
Java设计模式中的适配器模式(Adapter Pattern)是一种结构型设计模式,它的主要目的是将不兼容的接口转换为用户期望的接口,使原本由于接口不兼容而无法一起工作的类能够协同工作。适配器模式有两种形式:类适配器...
适配器模式是一种结构型设计模式,它的主要目的是使不兼容的接口能够协同工作。在实际开发中,我们可能会遇到这样的情况:一个类库或者服务提供了一个接口,而我们的代码需要使用另一个接口。适配器模式就充当了两者...
适配器模式(Adapter Pattern)是一种结构型设计模式,其主要目的是将一个类的接口变换成客户端所期待的另一种接口。通过这种方式,原本由于接口不兼容而无法一起工作的类可以顺利合作。适配器模式有两种实现方式:...
在 Java 开发中,适配器模式(Adapter Pattern)是一种非常有用的结构型设计模式,它可以帮助我们解决接口不兼容的问题,实现不同类之间的无缝集成。本文将详细介绍适配器模式的意图、解释、编程示例、适用场景、...
### 设计模式结构型-适配器 #### 概述 设计模式是一种在特定情境下解决软件设计问题的模板,通常被用来简化复杂系统的构建和维护。设计模式分为三种类型:创建型、行为型和结构型。其中,结构型设计模式关注于如何...
Java设计模式之Adapter适配器模式是一种结构型设计模式,主要用于解决不同接口之间的不兼容问题,使得原本由于接口不兼容不能一起工作的那些类可以一起工作。Adapter模式的主要作用是,继承现有的类,通过实现接口,...