设计模式——16迭代子模式(Iterator)

简介: 迭代子模式(Iterator)

16、迭代子模式(Iterator)
顾名思义,迭代器模式就是顺序访问聚集中的对象,一般来说,集合中非常常见,如果对集合类比较熟悉的话,理解本模式会十分轻松。这句话包含两层意思:一是需要遍历的对象,即聚集对象,二是迭代器对象,用于对聚集对象进行遍历访问。

这个思路和我们常用的一模一样,MyCollection中定义了集合的一些操作,MyIterator中定义了一系列迭代操作,且持有Collection实例,我们来看看实现代码:
两个接口:
[java] view plaincopy

  1. public interface Collection {
  2. public Iterator iterator();
  3. /取得集合元素/
  4. public Object get(int i);
  5. /取得集合大小/
  6. public int size();
  7. }
    [java] view plaincopy
  8. public interface Iterator {
  9. //前移
  10. public Object previous();
  11. //后移
  12. public Object next();
  13. public boolean hasNext();
  14. //取得第一个元素
  15. public Object first();
  16. }
    两个实现:

[java] view plaincopy

  1. public class MyCollection implements Collection {
  2. public String string[] = {"A","B","C","D","E"};
  3. @Override
  4. public Iterator iterator() {
  5. return new MyIterator(this);
  6. }
  7. @Override
  8. public Object get(int i) {
  9. return string[i];
  10. }
  11. @Override
  12. public int size() {
  13. return string.length;
  14. }
  15. }
    [java] view plaincopy
  16. public class MyIterator implements Iterator {
  17. private Collection collection;
  18. private int pos = -1;
  19. public MyIterator(Collection collection){
  20. this.collection = collection;
  21. }
  22. @Override
  23. public Object previous() {
  24. if(pos > 0){
  25. pos--;
  26. }
  27. return collection.get(pos);
  28. }
  29. @Override
  30. public Object next() {
  31. if(pos
  32. pos++;
  33. }
  34. return collection.get(pos);
  35. }
  36. @Override
  37. public boolean hasNext() {
  38. if(pos
  39. return true;
  40. }else{
  41. return false;
  42. }
  43. }
  44. @Override
  45. public Object first() {
  46. pos = 0;
  47. return collection.get(pos);
  48. }
  49. }
    测试类:

[java] view plaincopy

  1. public class Test {
  2. public static void main(String[] args) {
  3. Collection collection = new MyCollection();
  4. Iterator it = collection.iterator();
  5. while(it.hasNext()){
  6. System.out.println(it.next());
  7. }
  8. }
  9. }
    输出:A B C D E

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

目录
相关文章
|
6月前
|
设计模式 存储 Java
【设计模式——学习笔记】23种设计模式——迭代器模式Iterator(原理讲解+应用场景介绍+案例介绍+Java代码实现)
【设计模式——学习笔记】23种设计模式——迭代器模式Iterator(原理讲解+应用场景介绍+案例介绍+Java代码实现)
28 0
|
6月前
|
设计模式
设计模式14 - 迭代器模式【Iterator Pattern】
设计模式14 - 迭代器模式【Iterator Pattern】
15 0
|
4月前
|
设计模式 存储 Java
认真学习设计模式之迭代器模式(Iterator Pattern)
认真学习设计模式之迭代器模式(Iterator Pattern)
41 1
|
6月前
|
设计模式 存储 算法
设计模式~迭代器模式(Iterator)-20
迭代器模式(Iterator Pattern)是Java和.Net编程环境中非常常用的设计模式。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。迭代器模式属于行为型模式。迭代器模式已经被淘汰,java中已经把迭代器运用到各个聚集类(collection)中了,使用java自带的迭代器就已经满足我们的需求了 目录 迭代器模式(Iterator) (1)优点 (2)缺点 (3)使用场景 (4)注意事项 (5)应用实例: 代码
25 0
|
9月前
|
设计模式 存储 Java
Java中23种面试常考的设计模式之迭代器模式(Iterator)---行为型模式
Java中23种面试常考的设计模式之迭代器模式(Iterator)---行为型模式
59 1
|
11月前
|
设计模式 Java 索引
Java设计模式-迭代器模式(Iterator)
Java设计模式-迭代器模式(Iterator)
|
设计模式 算法 前端开发
设计模式:以桥接模式和访问者模式为例,看设计模式在微信小游戏版本迭代中的应用(下)
设计模式:以桥接模式和访问者模式为例,看设计模式在微信小游戏版本迭代中的应用
57 0
|
设计模式 开发框架 架构师
设计模式:以桥接模式和访问者模式为例,看设计模式在微信小游戏版本迭代中的应用(上)
去年9月份,微信小游戏《羊了个羊》火爆全网,由于同时在线玩家过多,开发商服务器2天之内竟然出现了3次宕机。这在云开发时代是极少出现的,若不是火爆程度大大超出了预期,程序员怎么可能来不及扩容服务器呢
37 0
|
设计模式 Java API
图解设计模式——Iterator模式(一个一个遍历)
使用 Java 或者 C++ 语言显示数组 arr 中的元素时,我们可以使用以下这样的 for 循环语句来
图解设计模式——Iterator模式(一个一个遍历)