`
qinglin876
  • 浏览: 13436 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

从集合类的升级联想到Java适配器(Adapter)模式

阅读更多
转自:http://www.blogjava.net/lzqdiy/archive/2007/04/18/
Historical Collection Classes(JDK1.1 之前)
提供的容器有Arrays,Vector,Stack,Hashtable,Properties,BitSet。其中定义出一种走访群集内各元素的标准方式,称为Enumeration(列举器)接口,用法如下:
Vector v=new Vector();
for (Enumeration enum =v.elements(); enum.hasMoreElements();) {
Object o = enum.nextElement();
processObject(o);
}
而在JDK1.2版本中引入了Iterator接口,新版本的集合对象(HashSet,HashMap,WeakHeahMap,ArrayList,TreeSet,TreeMap, LinkedList)是通过Iterator接口访问集合元素的。
例如: List list=new ArrayList();
for(Iterator it=list.iterator();it.hasNext();)
{
    System.out.println(it.next());
}
这样,如果将老版本的程序运行在新的Java编译器上就会出错。因为List接口中已经没有elements(),而只有iterator()了。那么如何可以使老版本的程序运行在新的Java编译器上呢?如果不加修改,是肯定不行的,但是修改要遵循“开-闭”原则。
这时候我想到了Java设计模式中的适配器模式。

/**//*
*@author 我为J狂 建立日期 2007-4-18
*
*/
package net.blogjava.lzqdiy;

import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.List;

public class NewEnumeration implements Enumeration
{

    Iterator it;
    public NewEnumeration(Iterator it)
    {
        this.it=it;
        // TODO Auto-generated constructor stub
    }

    public boolean hasMoreElements()
    {
        // TODO Auto-generated method stub
        return it.hasNext();
    }

    public Object nextElement()
    {
        // TODO Auto-generated method stub
        return it.next();
    }
    public static void main(String[] args)
    {
        List list=new ArrayList();
        list.add("a");
        list.add("b");
        list.add("C");
        for(Enumeration e=new NewEnumeration(list.iterator());e.hasMoreElements();)
        {
            System.out.println(e.nextElement());
        }
    }
}
NewEnumeration是一个适配器类,通过它实现了从Iterator接口到Enumeration接口的适配,这样我们就可以使用老版本的代码来使用新的集合对象了。
分享到:
评论

相关推荐

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

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

    iOS 设计模式 适配器模式

    适配器模式通过创建一个适配器类来封装原有接口,然后提供一个与目标接口一致的新接口,使得原本不兼容的类可以协同工作。 在iOS应用开发中,适配器模式主要体现在以下几个方面: 1. **数据适配**:当需要将不同...

    万能适配器Adapter

    本主题主要围绕"万能适配器Adapter"进行深入探讨,该适配器完美地封装了BaseAdapter,并引入了ViewHolder设计模式,以提高性能和代码复用性。 1. **BaseAdapter基础** BaseAdapter是Android SDK提供的一个抽象类,...

    Java集合排序及java集合类详解.pdf

    Java集合排序及java集合类详解.pdf

    第13讲 JAVA集合类.ppt

    Java集合类是Java编程语言中用于存储和管理对象的关键组件,它们构成了Java Collections Framework的核心。这个框架提供了一组高效、灵活的数据结构,使得开发者能够轻松地处理数据集合,而无需关心底层实现的复杂性...

    Java企业设计模式

    在Java中,当需要使用一个已经存在的类,但它提供的接口与我们的需求不符时,可以使用适配器模式进行转换。 6. 桥接模式:桥接模式将抽象部分与实现部分分离,使它们可以独立变化。在Java中,如果一个类有多个维度...

    Java的23种设计模式百度云下载链接.rar

    Java中的`Adapter`类用于不同接口之间的转换。 9. **桥接模式**:将抽象部分与它的实现部分分离,使它们都可以独立地变化。Java的AWT和Swing图形库就是桥接模式的实例。 10. **代理模式**:为其他对象提供一种代理...

    java23种设计模式集合

    - 适配器模式(Adapter):将两个不兼容的接口进行桥接,使得原本不能一起工作的类可以协同工作。 - 桥接模式(Bridge):将抽象部分与实现部分分离,使它们可以独立变化。 - 组合模式(Composite):将对象组合...

    Java集合类图片

    Java集合类,在图片上体现出来,为了更好的描述,本来是博客里的,不好往博客里插,所以单独弄出来了。

    JAVA学习——集合与三层设计模式

    在Java编程语言中,集合和三层设计模式是两个非常重要的概念,对于开发高效、可维护的软件系统至关重要。本文将详细探讨这两个主题。 首先,我们来了解Java中的集合。Java集合框架是Java SE API的一个核心部分,它...

    一张图让你看清Java集合类

    一张图让你看清Java集合类 所有精华 集于一图 一目了然 形象易懂 十分中肯 绝对干货!

    设计模式Java版

    结构型模式则涉及如何组合对象和类,如适配器模式、装饰器模式、代理模式、桥接模式、组合模式、外观模式和享元模式。行为型模式关注对象间职责分配和通信,比如策略模式、模板方法模式、观察者模式、责任链模式、...

    Java与模式(阎宏经典版)

    在Java中,`Adapter`类允许原本不兼容的类协同工作。 7. **代理模式**:为其他对象提供一种代理以控制对这个对象的访问。Java中的动态代理 (`java.lang.reflect.Proxy`) 就是代理模式的典型应用。 8. **建造者模式...

    适配器的学习及使用

    适配器设计模式是一种软件设计模式,它允许不兼容的接口之间进行通信,通过创建一个适配器类,使得原本由于接口不匹配而无法一起工作的类可以协同工作。这个概念来源于现实生活中的电源适配器,它能将不同电压或插头...

    Java设计模式及案例1

    结构型模式关注对象的组合和结构,如适配器模式(Adapter)、装饰器模式(Decorator)和代理模式(Proxy)。行为型模式关注对象间的行为和交互,如观察者模式(Observer)、策略模式(Strategy)和模板方法模式...

    适配器的使用

    适配器模式是一种软件设计模式,它允许不同的接口或类之间进行通信,使得原本不兼容的组件能够协同工作。在上述描述中,适配器模式主要用于处理已经存在的类与新需求之间的接口不匹配问题,避免因为接口差异而大量...

    java设计模式(刘伟)

    - **从招式与内功谈起**:这部分内容将帮助读者理解设计模式的本质,即它们不仅仅是编程技巧的集合,更是解决问题的思维模式。 - **招式**:指的是具体的编程实践,如类的设计、方法的实现等。 - **内功**:则更...

    java设计模式PPT

    结构型模式包括适配器(Adapter)、桥接(Bridge)、装饰(Decorator)、外观(Facade)、组合(Composite)、享元(Flyweight)和代理(Proxy),它们主要处理类与类之间的关系,帮助构建复杂的系统结构。...

    java反射,获取所有属性、方法以及List集合类

    本篇文章将深入探讨如何使用Java反射来获取一个类的所有属性、方法,并处理List集合类。 首先,让我们了解Java反射的基础概念。在Java中,`java.lang.Class`类代表运行时的类信息。我们可以使用`Class.forName()`...

Global site tag (gtag.js) - Google Analytics