设计模式--迭代器模式Iterator(行为型)
2014-04-15 10:51
387 查看
1 定义:
1.1 定义:Provide a way to access the elements of an aggregate object sequentially without exposing its underlying representation.(它提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。)
此模式是一个没落的模式,基本上没人会单独写一个迭代器模式。没落的原因是,绝大多数需要迭代器的场合,都已经有了标准的实现。
1.2 通用类图:
一个更便于理解的类图:
1.3 通用代码:
2 优点
方便遍历容器中的元素。
3 缺点
暂无
4 应用场景
各XDK,PHP,Perl,等。。。
5 注意事项
尽量不要自己写迭代器模式,看是否已提供。
6 扩展
无
转自:/article/2369016.html
1.1 定义:Provide a way to access the elements of an aggregate object sequentially without exposing its underlying representation.(它提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。)
此模式是一个没落的模式,基本上没人会单独写一个迭代器模式。没落的原因是,绝大多数需要迭代器的场合,都已经有了标准的实现。
1.2 通用类图:
一个更便于理解的类图:
1.3 通用代码:
public interface Aggregate { // 是容器必然有元素的增加 public void add(Object object); // 减少元素 public void remove(Object object); // 由迭代器来遍历所有的元素 public Iterator iterator(); } public class ConcreteAggregate implements Aggregate { // 容纳对象的容器 private Vector vector = new Vector(); // 增加一个元素 public void add(Object object) { this.vector.add(object); } // 返回迭代器对象 public Iterator iterator() { return new ConcreteIterator(this.vector); } // 删除一个元素 public void remove(Object object) { this.vector.remove(object); } } public interface Iterator { // 遍历到下一个元素 public Object next(); // 是否已经遍历到尾部 public boolean hasNext(); // 删除当前指向的元素 public boolean remove(); // 返回当前指向的元素 public Object currentItem(); } public class ConcreteIterator implements Iterator { private Vector vector = new Vector(); // 定义当前游标 public int cursor = 0; @SuppressWarnings("unchecked") public ConcreteIterator(Vector _vector) { this.vector = _vector; } // 判断是否到达尾部 public boolean hasNext() { if (this.cursor == this.vector.size()) { return false; } else { return true; } } // 返回下一个元素 public Object next() { Object result = null; if (this.hasNext()) { result = this.vector.get(this.cursor++); } else { result = null; } return result; } // 删除当前元素 public boolean remove() { this.vector.remove(this.cursor); return true; } // 返回当前指向的元素 public Object currentItem() { return this.vector.get(this.cursor); } } public class Client { public static void main(String[] args) { // 声明出容器 Aggregate agg = new ConcreteAggregate(); // 产生对象数据放进去 agg.add("abc"); agg.add("aaa"); agg.add("1234"); // 遍历一下 Iterator iterator = agg.iterator(); while (iterator.hasNext()) { System.out.println(iterator.next()); } } }
2 优点
方便遍历容器中的元素。
3 缺点
暂无
4 应用场景
各XDK,PHP,Perl,等。。。
5 注意事项
尽量不要自己写迭代器模式,看是否已提供。
6 扩展
无
转自:/article/2369016.html
相关文章推荐
- 设计模式 ( 十四 ) 迭代器模式Iterator(对象行为型)
- 设计模式 ( 十四 ) 迭代器模式Iterator(对象行为型)
- 设计模式17:Iterator 迭代器模式(行为型模式)
- JAVA设计模式(21):行为型-迭代器模式(Iterator)
- 23种设计模式(15)_行为型_迭代器模式(Iterator Pattern)
- 设计模式学习之迭代器模式(Iterator,行为型模式)(17)
- 十九.行为型设计模式——Iterator Pattern(迭代器模式)
- 设计模式 ( 十四 ) 迭代器模式Iterator(对象行为型)
- 设计模式-行为型- 迭代器模式(Iterator)
- 设计模式-行为型-迭代器模式(Iterator)
- [设计模式-行为型]迭代器模式(Iterator)
- 设计模式 ( 十四 ) 迭代器模式Iterator(对象行为型)
- [设计模式-行为型]迭代器模式(Iterator)
- 设计模式 ( 十四 ) 迭代器模式Iterator(对象行为型)
- 设计模式 ( 十四 ) 迭代器模式Iterator(对象行为型)
- C#面向对象模式设计第十八讲:Iterator 迭代器模式(行为型模式)
- 设计模式(16)-行为型-迭代器模式(Iterator)
- [导入]C#面向对象设计模式纵横谈(18):(行为型模式) Iterator 迭代器模式.zip(8.04 MB)
- 深入浅出设计模式-010:迭代器模式(Iterator Pattern)
- Php设计模式之【迭代器模式Iterator Pattern】