行为型模式~迭代器模式

定义:

提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节,为容器服务

 

角色:

  1. 抽象迭代器:负责定义访问遍历集合的接口  next  hasnext
  2. 具体迭代器:实现Iterator接口 完成遍历
  3. 抽象聚集:创建迭代器
  4. 具体聚集:实现接口,定义容器,实现getElement方法  读取容器vector.get(index)

实例:

package 迭代器模式;

public interface Iterator1 {
	public Object next();
	public boolean hasNext();
}
package 迭代器模式;

public class ConcreteIterator implements Iterator1{
	private int index = 0;
	private int size = 0;
	private ConcreteAggregate agg;
	public ConcreteIterator(ConcreteAggregate agg){
		this.agg = agg;
		size = agg.size();
		index = 0;
	}
	@Override
	public Object next() {
		// TODO 自动生成的方法存根
		if(index<size){
			return agg.getElement(index++);
		}
		return null;
		
	}

	@Override
	public boolean hasNext() {
		// TODO 自动生成的方法存根
		return index<size;
	}
	

}
package 迭代器模式;

import java.util.Vector;

public class ConcreteAggregate {
	private Vector vector = new Vector();
	public void add(Object object) {
		this.vector.add(object);
	}
	public Object getElement(int index) {
		if(index<vector.size()){
			
			return vector.get(index);
			
		}else{
			return null;
		}
		
	}
	public int size() {
		// TODO 自动生成的方法存根
		return vector.size();
	}
	public Iterator1 conerteIterator1() {
		return new ConcreteIterator(this);
	}

}
package 迭代器模式;

public class Main {
	public static void main(String []args) {
		ConcreteAggregate aggregate = new ConcreteAggregate();
		aggregate.add("A");
		aggregate.add("B");
		aggregate.add("C");
		aggregate.add("D");
		aggregate.add("E");
		aggregate.add("F");
		
		Iterator1 iterator1 = aggregate.conerteIterator1();
		while(iterator1.hasNext()){
			System.out.println(iterator1.next());
		}
		
	}
}

A
B
C
D
E
F

各种容器的遍历 

package 迭代器模式1;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.Stack;
import java.util.Vector;

public class IteratorDemo {
	private static void show(Iterator iterator){
		while(iterator.hasNext()){
			System.out.print(iterator.next()+" ");
		}
	}
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		//向量
		Vector vector = new Vector();
		vector.add("向量1");
		vector.add("向量2");
		vector.add("向量3");
		vector.add("向量4");
		vector.add("向量5");
		
		//序列
		ArrayList list = new ArrayList();
		list.add("序列1");
		list.add("序列2");
		list.add("序列3");
		
		//栈
		Stack stack = new Stack();
		Stack stack1 = new Stack();
		stack.push("A");
		stack.push("B");
		stack.push("C");
		stack.push("D");
		
		stack1.add("A");
		stack1.add("B");
		stack1.add("C");
		stack1.add("D");
		Iterator iterator = vector.iterator();
		show(iterator);
		System.out.println();
		Iterator iterator1 = list.iterator();
		show(iterator1);
		System.out.println();
		Iterator iterator2 = stack.iterator();
		show(iterator2);
		System.out.println();
		Iterator iterator3 = stack1.iterator();
		show(iterator3);
		
	}

}

 向量1 向量2 向量3 向量4 向量5 
序列1 序列2 序列3 
A B C D 
A B C D 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值