java设计模式--行为型模式--迭代模式

 1                                             迭代器模式
 2  概述
 3     给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
 4  
 5  
 6  适用性
 7     1.访问一个聚合对象的内容而无需暴露它的内部表示。
 8 
 9     2.支持对聚合对象的多种遍历。
10 
11     3.为遍历不同的聚合结构提供一个统一的接口(即,支持多态迭代)。
12  
13  
14  参与者
15     1.Iterator
16       迭代器定义访问和遍历元素的接口。
17 
18     2.ConcreteIterator
19       具体迭代器实现迭代器接口。
20       对该聚合遍历时跟踪当前位置。
21 
22     3.Aggregate
23       聚合定义创建相应迭代器对象的接口。
24 
25     4.ConcreteAggregate
26       具体聚合实现创建相应迭代器的接口,该操作返回ConcreteIterator的一个适当的实例.

当我看到这个模式的时候,我真的惊呆了,我联想起平时我们的for循环与迭代器。

 1 public class Test {
 2 
 3     public static void main(String[] args) {
 4         List list = new ListImpl();
 5         list.add("a");
 6         list.add("b");
 7         list.add("c");
 8         //第一种迭代方式
 9         Iterator it = list.iterator();
10         while (it.hasNext()) {
11             System.out.println(it.next());
12         }
13         
14         System.out.println("=====");
15         //第二种迭代方式
16         for (int i = 0; i < list.getSize(); i++) {
17             System.out.println(list.get(i));
18         }
19     }
20 }
 1 public interface List {
 2 
 3     Iterator iterator();
 4     
 5     Object get(int index);
 6     
 7     int getSize();
 8     
 9     void add(Object obj);
10 }
 1 public class ListImpl implements List {
 2 
 3     private Object[] list;
 4     
 5     private int index;
 6     
 7     private int size;
 8     
 9     public ListImpl() {
10         index = 0;
11         size = 0;
12         list = new Object[100];
13     }
14     
15     public Iterator iterator() {
16         return new IteratorImpl(this);
17     }
18     
19     public Object get(int index) {
20         return list[index];
21     }
22     
23     public int getSize() {
24         return this.size;
25     }
26     
27     public void add(Object obj) {
28         list[index++] = obj;
29         size++;
30     }
31 }
 1 public interface Iterator {
 2 
 3     Object next();
 4     
 5     void first();
 6     
 7     void last();
 8     
 9     boolean hasNext();
10 }
 1 public class IteratorImpl implements Iterator {
 2 
 3     private List list;
 4     
 5     private int index;
 6     
 7     public IteratorImpl(List list) {
 8         index = 0;
 9         this.list = list;
10     }
11     
12     public void first() {
13         index = 0;
14     }
15 
16     public void last() {
17         index = list.getSize();
18     }
19 
20     public Object next() {
21         Object obj = list.get(index);
22         index++;
23         return obj;
24     }
25 
26     public boolean hasNext() {
27         return index < list.getSize();
28     }
29 }

 

java设计模式--行为型模式--迭代模式,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。