您的位置 首页 java

Java,设计模式,行为型,迭代器模式,顺序访问聚合对象元素

迭代器模式( iterator Pattern):

提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。

提供一种遍历集合元素的统一接口,用一致的方法遍历集合元素,不需要知道集合对象的底层表示,即:不暴露其内部的结构。

迭代器模式的角色:

迭代器( Iterator )、具体迭代器(ConcreteIterator)、聚合(Aggregate)和具体聚合(ConcreteAggregate);

迭代器模式的案例:

实现类图:

实现代码:

 /**
 * 迭代器(Iterator)
 */public interface Iterator {

Object First();

Object Next();

boolean IsDone();

 Object  CurrentItem();

}  
 
import  Java .util.ArrayList;
import java.util.List;

/**
 * 具体迭代器(ConcreteIterator)
 */public class ConcreteIterator implements Iterator {

private List<Object> list = new ArrayList<Object>();
private int curr = 0;

public ConcreteIterator(List<Object> list) {
this.list = list;
}

public Object First() {
return list.get(0);
}

public Object Next() {
Object ret = null;
curr++;
if (curr < list.size()) {
ret = list.get(curr);
}
return ret;
}

public boolean IsDone() {
return curr >= list.size() ? true :  false ;
}

public Object CurrentItem() {
return list.get(curr);
}

}  
 /**
 * 聚合(Aggregate)
 */public abstract class Aggregate {

abstract Iterator CreateIterator();

}  
 import java.util.ArrayList;
import java.util.List;

/**
 * 具体聚合(ConcreteAggregate)
 */public class ConcreteAggregate extends Aggregate {

private List<Object> list = new ArrayList<Object>();

public ConcreteAggregate(List<Object> list) {
this.list = list;
}

public Iterator CreateIterator() {
return new ConcreteIterator(list);
}

}
  
 import java.util.Arrays;
import java.util.List;

/**
 * 客户端
 */public class Client {

public static void main(String[] args) {
// 
List<Object> list = Arrays.asList("11111111","22222222","33333333","44444444");
Aggregate aggregate = new ConcreteAggregate(list);
Iterator iterator = aggregate.CreateIterator();
// iterator.First();
while (!iterator.IsDone()) {
System.out.println(iterator.CurrentItem());
iterator.Next();
}
}

}  

文章来源:智云一二三科技

文章标题:Java,设计模式,行为型,迭代器模式,顺序访问聚合对象元素

文章地址:https://www.zhihuclub.com/186836.shtml

关于作者: 智云科技

热门文章

网站地图