java设计模式_迭代器模式

/**
 * @Title: Aggregate.java
 * @Package com.wangbiao.design
 * @Description: TODO 
 * @author wangbiao   
 * @date 2014-9-20 下午05:02:00 
 * @version V1.0
 */
package com.wangbiao.design.iterator;

import java.io.ObjectInputStream.GetField;
import java.util.ArrayList;
import java.util.List;

/**
 * @Title: Aggregate.java
 * @Package com.wangbiao.design
 * @Description: TODO 
 * @author wangbiao   
 * @date 2014-9-20 下午05:02:00 
 * @version V1.0
 */
public interface Aggregate {
    
    public abstract Object createIterator();
    public abstract Object get(int index);

}

class ConcreteAggregate implements Aggregate{
    public List<String> list = new ArrayList<String>();
    
    @Override
    public Object createIterator() {
        
        return null;
    }

    @Override
    public Object get(int index) {
        
        if(index >= 0 ){
            return list.get(index);
        }
        return null;
    }
        
}

/**
 * @Title: MyIterator.java
 * @Package com.wangbiao.design.iterator
 * @Description: TODO 
 * @author wangbiao   
 * @date 2014-9-20 下午05:09:02 
 * @version V1.0
 */
package com.wangbiao.design.iterator;

import java.util.Collection;
import java.util.List;

/**
 * @Title: MyIterator.java
 * @Package com.wangbiao.design.iterator
 * @Description: TODO 
 * @author wangbiao   
 * @date 2014-9-20 下午05:09:02 
 * @version V1.0
 */
public interface MyIterator {

    public abstract Object first();
    public abstract Object next();
    public abstract boolean hasNext();
    public abstract Object currentItem();
    
}

class ConcreteMyIterator implements MyIterator{
    public List<Object> list;
    public int conrrent = 0;
    
    public ConcreteMyIterator() {
        // TODO Auto-generated constructor stub
    }
    
    public ConcreteMyIterator( List<Object> list) {
        this.list = list;
    }

    @Override
    public Object first() {
        if(list != null){
            return list.get(0);
        }
        return null;
    }

    @Override
    public Object next() {
        if(conrrent < list.size()){
            return list.get(conrrent + 1);
        }
        return list.get(conrrent);
    }

    @Override
    public boolean hasNext() {
        if(conrrent >= list.size()){
            return false;
        }
        return true;
    }

    @Override
    public Object currentItem() {
        
        return list.get(conrrent);
        
    }
    
}
时间: 2024-08-14 10:43:46

java设计模式_迭代器模式的相关文章

大话设计模式_迭代器模式(Java代码)

迭代器模式:提供一个方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示 简单描述:提供一个单独的接口遍历聚集类对象中的成员,以实现聚集对象的隐藏和内部数据供外部访问 大话设计模式中的截图: 我觉得以上面的图示进行编码会暴露ConcreteAggregate中的内部信息(ConcreteIerator可以访问聚集类中的成员,那表示其他类也可以和ConcreteIerator一样进行相同的访问),所以我以另外一种形式实现迭代器(即内部类的方式,和Java中的ArrayList类似) 代码

折腾Java设计模式之迭代器模式

迭代器模式 Provide a way to access the elements of an aggregate object sequentially without exposing its underlying representation. 提供一种不公示其底层细节(结构)的情况下能顺序访问聚合对象元素的方法. 其实在java体系中,jdk已经引入了迭代器接口以及对于的容器接口等.就拿迭代器中的角色,在java中找出其对应的类. 具体角色 (1)迭代器角色(Iterator):定义遍

JAVA设计模式之 迭代器模式【Iterator Pattern】

一.概述 提供一种方法来访问聚合对象(容器container),而不用暴露这个对象的内部细节. 二.适用场景 1>遍历访问聚合对象中的元素,而无须暴露它的内容表示,将聚合对象的访问和内部数据的存储分离.使得访问聚合对象时无须了解其内部的实现细节. 2>需要为一个聚合对象提供多种遍历实现. 三.UML类图 四.参与者 1>Iterator(抽象迭代器):它定义了访问和遍历元素的接口,声明了用于遍历数据元素的方法,例如:用于获取第一个元素的first()方法,用于访问下一个元素的next()

Java设计模式之迭代器模式

概论 什么是迭代器模式?迭代器模式是提供一种方法访问一个容器对象中的各个元素,而又不需要暴露该对象的细节. 迭代器模式示例 迭代器模式中分为4种角色. ①抽象迭代器 ②具体迭代器 ③抽象容器 ④具体容器 首先我们一个抽象迭代器,抽象迭代器中包含遍历到下一个元素.判断遍历是否已经到了尾部.删除当前指向的元素. 1 public interface Iterator { 2 3 public Object next(); 4 public boolean hasNext(); 5 public bo

16.设计模式_迭代器模式

一.引言 在上篇博文中分享了我对命令模式的理解,命令模式主要是把行为进行抽象成命令,使得请求者的行为和接受者的行为形成低耦合.在一章中,将介绍一下迭代器模式.下面废话不多说了,直接进入本博文的主题. 二.迭代器模式的介绍 迭代器是针对集合对象而生的,对于集合对象而言,必然涉及到集合元素的添加删除操作,同时也肯定支持遍历集合元素的操作,我们此时可以把遍历操作也放在集合对象中,但这样的话,集合对象就承担太多的责任了,面向对象设计原则中有一条是单一职责原则,所以我们要尽可能地分离这些职责,用不同的类去

Java 设计模式_代理模式(2016-08-19)

概念: 代理模式是对象的结构模式.代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用. 就是一个人或者机构代表另一个人或者机构采取行动.在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用. 类图: 在代理模式中的角色: ● 抽象对象角色:声明了目标对象和代理对象的共同接口,这样一来在任何可以使用目标对象的地方都可以使用代理对象. ● 目标对象角色:定义了代理对象所代表的目标对象. ● 代理对象角色:代理对象内部含有目标对象的

java设计模式_桥接模式

现在的手机,按照操作系统分,有ios,有android,还有window phone等. 如果是按软件来分的话,就有通讯录,游戏等. 按继承的思维来考虑的话,如下: 但是问题来了,如果是按照手机品牌来分的话,增加一个新的手机品牌的话,意味着不仅要增加手机品牌,还要增加改手机品牌的通讯录和游戏. 若按照手机软件来分的话,同样,增加一个新的软件的话,意味着不仅要增加新的软件,还要增加各个品牌手机对应的通讯录和游戏. 通过桥接模式的话,若增加软件,则只需要增加软件即可,若增加品牌,只需增加品牌即可.

java设计模式_建造者模式

/**  *   */ package com.wangbiao.design.builder; import java.util.ArrayList; import java.util.Iterator; import java.util.List; /**  * @Title: Product.java  * @Package com.wangbiao.design.builder  * @Description: TODO   * @author wangbiao     * @date 

java设计模式_外观模式

package com.wangbiao.design.facade; /**  *   * @Title: Client.java  * @Package com.wangbiao.design.facade  * @Description: TODO   * @author wangbiao     * @date 2014-9-20 下午03:56:08   * @version V1.0  */ public class Client {     public static void m