`
qinglin876
  • 浏览: 13248 次
  • 性别: 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接口的适配,这样我们就可以使用老版本的代码来使用新的集合对象了。
分享到:
评论

相关推荐

    万能适配器Adapter

    在Android中,适配器主要用来将数据集合(如ArrayList)映射到视图列表上,使数据能够被正确显示。通常,我们创建自定义的适配器类,继承自BaseAdapter或者更现代的RecyclerView.Adapter,并实现其中的几个关键方法...

    iOS 设计模式 适配器模式

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

    java与模式光盘源码

    结构型模式如适配器(Adapter)、装饰器(Decorator)和代理(Proxy)等,关注如何组合对象和类,以实现新的功能或改善原有结构。行为型模式如观察者(Observer)、模板方法(Template Method)和策略(Strategy)等...

    Java企业设计模式

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

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

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

    Java集合类图片

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

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

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

    一张图让你看清Java集合类

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

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

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

    设计模式Java版

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

    Java设计模式及案例1

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

    适配器的使用

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

    java设计模式PPT

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

    Java与模式.pdf

    此外,书中可能还涵盖了Java集合框架中的设计模式,比如迭代器模式在ArrayList和LinkedList中的应用,以及装饰器模式在InputStream和OutputStream等流类中的体现。还有,可能会讲解到如何在实际项目中使用模式来解决...

    java设计模式(刘伟)

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

    JAVA设计模式在JDK中的应用

    适配器模式(Adapter) 适配器模式用于将一个类的接口转换成客户希望的另一个接口。JDK中适配器模式的典型应用场景包括: - `java.util.Arrays#asList()`: 将数组转换为列表。 - `javax.swing.JTable(TableModel)`: ...

    设计模式_java语言中的应用

    本文将深入探讨在Java语言中常用的一些设计模式,包括Iterator(迭代器)、Adapter(适配器)、Template Method(模板方法)、Factory Method(工厂方法)以及Abstract Factory(抽象工厂)。这些模式在实际开发中...

    java的设计模式.对java设计模式的理解.

    行为型模式涉及对象之间的交互和职责分配,如观察者模式、模板方法模式、策略模式、命令模式、迭代器模式、访问者模式、备忘录模式、状态模式、解释器模式和责任链模式。 二、Java中的具体设计模式 1. 单例模式:...

Global site tag (gtag.js) - Google Analytics