java设计模式--迭代器模式
程序员文章站
2023-10-16 23:27:11
迭代器模式:提供一种方法顺序来访问一个聚合对象中的元素,并且不暴露该对象的内部表示。当我们需要去遍历一个对象时就可以考虑使用迭代器模式。 聚集抽象类 具体聚集类。 迭代抽象类。 具体迭代类。 测试类。 测试结果: abcd 其实迭代器模式在java中早有实现,java中的集合类实现了Iterable ......
迭代器模式:提供一种方法顺序来访问一个聚合对象中的元素,并且不暴露该对象的内部表示。当我们需要去遍历一个对象时就可以考虑使用迭代器模式。
聚集抽象类
public interface collection { iterator createiterator(); }
具体聚集类。
public class concretecollection implements collection { private list<object> list = new arraylist<>(); @override public iterator createiterator() { return new concreteiterator(this); } //获取集合大小 public int count(){ return list.size(); } //添加元素 public void setlist(object object){ list.add(object); } //获取元素 public object getlist(int index){ return list.get(index); } }
迭代抽象类。
public interface iterator { //第一个节点 object first(); //下一个节点 object next(); //是否遍历完成 boolean isdone(); //当前节点 object currentitem(); }
具体迭代类。
public class concreteiterator implements iterator { private concretecollection concretecollection; private int current = 0; public concreteiterator(concretecollection concretecollection){ this.concretecollection = concretecollection; } @override public object first() { return concretecollection.getlist(0); } @override public object next() { current++; if(current<concretecollection.count()){ return concretecollection.getlist(current); }else { return null; } } @override public boolean isdone() { return current >=concretecollection.count()? true:false; } @override public object currentitem() { return concretecollection.getlist(current); } }
测试类。
public class test { public static void main(string[] args) { concretecollection concretecollection = new concretecollection(); concretecollection.setlist("a"); concretecollection.setlist("b"); concretecollection.setlist("c"); concretecollection.setlist("d"); concreteiterator concreteiterator = new concreteiterator(concretecollection); object first = concreteiterator.first(); while (!concreteiterator.isdone()){ system.out.println(concreteiterator.currentitem()); concreteiterator.next(); } } }
测试结果:
a
b
c
d
其实迭代器模式在java中早有实现,java中的集合类实现了iterable接口,而iterable接口中声明了一个iterator方法,返回一个iterator,这个iterator接口中定义了遍历的相关方法,和上面的例子中的iterator接口类似。
上一篇: 野生的鱼确实比买的好吃