`

迭代子模式

 
阅读更多
public interface Collection {	
	public Iterator iterator();	
	/*取得集合元素*/
	public Object get(int i);	
	/*取得集合大小*/
	public int size();
}

public interface Iterator {
	//前移
	public Object previous();	
	//后移
	public Object next();
	public boolean hasNext();	
	//取得第一个元素
	public Object first();
}

public class MyCollection implements Collection {
	public String string[] = {"A","B","C","D","E"};
	@Override
	public Iterator iterator() {
		return new MyIterator(this);
	}
	@Override
	public Object get(int i) {
		return string[i];
	}
	@Override
	public int size() {
		return string.length;
	}
}

public class MyIterator implements Iterator {
	private Collection collection;
	private int pos = -1;	
	public MyIterator(Collection collection){
		this.collection = collection;
	}	
	@Override
	public Object previous() {
		if(pos > 0){
			pos--;
		}
		return collection.get(pos);
	}
	@Override
	public Object next() {
		if(pos<collection.size()-1){
			pos++;
		}
		return collection.get(pos);
	}
	@Override
	public boolean hasNext() {
		if(pos<collection.size()-1){
			return true;
		}else{
			return false;
		}
	}
	@Override
	public Object first() {
		pos = 0;
		return collection.get(pos);
	}
}

public class Test {
	public static void main(String[] args) {
		Collection collection = new MyCollection();
		Iterator it = collection.iterator();		
		while(it.hasNext()){
			System.out.println(it.next());
		}
	}
}

输出:A B C D E

此处我们貌似模拟了一个集合类的过程,感觉是不是很爽?其实JDK中各个类也都是这些基本的东西,加一些设计模式,再加一些优化放到一起的,只要我们把这些东西学会了,掌握好了,我们也可以写出自己的集合类,甚至框架!

分享到:
评论

相关推荐

    IteratorPattern 迭代设计模式

    迭代器模式(IteratorPattern)是设计模式中的一种行为模式,它提供了一种顺序访问聚合对象元素的方法,同时又不暴露其底层表示。这种模式允许我们遍历集合对象的元素,而无需暴露其内部结构。在Java、C#等面向对象...

    AspectJ实现设计模式(五)—迭代子模式

    本文介绍使用AspectJ实现设计模式之迭代子模式,文章以一个购买商品的例子实现AspectJ版本的内禀迭代子。由于迭代子模式应用广泛,文章在此不再赘述模式的具体内容了,我使用具体的例子说明如何使用AspectJ来完成...

    Iterator Pattern(迭代模式)

    迭代模式是一种行为设计模式,它允许我们通过统一的接口遍历集合对象的元素,而无需暴露其底层表示。在Java、C#等面向对象语言中,迭代器模式被广泛使用,尤其是在集合类库中,如ArrayList、LinkedList等。下面我们...

    java迭代子模式详解

    迭代子模式(Iterator Pattern)是一种行为设计模式,它允许我们顺序访问聚合对象的元素,而无需暴露其底层表示。在Java中,迭代器模式广泛应用于集合框架,如List、Set和Map等接口的实现。 在Java中,迭代器模式的...

    组合模式二叉树,前序、中序、后续,迭代器模式访问遍历

    在这个主题中,我们主要探讨了如何利用组合模式(Composite Pattern)构建二叉树,并通过迭代器模式(Iterator Pattern)来实现对树的遍历,包括前序、中序和后序遍历。这些是设计模式中的经典应用,对于理解和掌握...

    23种设计模式详解PDF

    设计模式 的分类 总体来说设计模式分为三大类: 创建型模式(5): ...策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

    设计模式-C++

    创建型模式,共五种:工厂方法模式、抽象工厂模式、...行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

    32设计模式.doc

    创建型模式,共五种:工厂方法模式、抽象工厂模式、...行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

    java设计模式示例

    java设计模式示例 创建型模式(5种):工厂方法模式,...行为型模式(11种):策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

    基于Java实现的23种设计模式Demo,抽象工厂模式、建造模式、工厂方法模式、原型模式、单例模式、外观模式、适配器模式等

    分别为:抽象工厂模式、建造模式、工厂方法模式、原型模式、单例模式、外观模式、适配器模式、桥接模式、组合模式、装饰模式、享元模式、代理模式、命令模式、解释器模式、访问者模式、迭代子模式、中介者模式、备忘...

    23种设计模式项目实例

    创建型模式,共五种:工厂方法模式、抽象工厂模式、...行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

    23种设计模式实例

    总体来说设计模式分为三大类: ...行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式例子

    23种Java设计模式

    总体来说设计模式分为三大类: 创建型模式,共五种:...行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

    23种设计模式demo

    java的设计模式大体上分为三大类: ...行为型模式(11种):策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

    23个设计模式完整DEMO

    C#版的23个设计模式完整DEMO,包括: ...行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

    05-容易被忽略的迭代器(1).html

    迭代子模式( Iterator ) 责任链模式( Chain of Responsibility ) 命令模式( Command ) 备忘录模式( Memento ) 状态模式( State ) 访问者模式( Visitor ) 中介者模式( Mediator ) 解释器模式( ...

    23种设计模式java源码

    行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 其实还有两类:并发型模式和线程池模式。

    c#设计模式

    总体来说设计模式分为三大类: ...行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

    java常用23中设计模式

    行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 其实还有两类:并发型模式和线程池模式。

Global site tag (gtag.js) - Google Analytics