迭代器模式是一种常用的设计模式,它可以顺序地访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。迭代器模式可以把迭代的过程从业务逻辑中分离出来,在使用迭代器模式之后,即使不关心对象的内部构造,也可以按顺序访问其中的元素。
下面我们来看一个具体的java迭代器模式实例:
public interface Iterator { public boolean hasNext(); public Object next(); } public interface Container { public Iterator getIterator(); } public class NameRepository implements Container { public String names[] = {"Robert" , "John" ,"Julie" , "Lora"}; @Override public Iterator getIterator() { return new NameIterator(); } private class NameIterator implements Iterator { int index; @Override public boolean hasNext() { if(index < names.length){ return true; } return false; } @Override public Object next() { if(this.hasNext()){ return names[index++]; } return null; } }}
上面的例子中,NameRepository是一个容器类,它有一个字符串数组names作为内部数据。NameIterator是一个迭代器,它实现了Iterator接口并重写了hasNext()和next()方法。NameRepository实现了Container接口并重写了getIterator()方法。
当我们要遍历NameRepository时,我们可以使用如下代码来实现:
public static void main(String[] args) { NameRepository namesRepository = new NameRepository(); for(Iterator iter = namesRepository.getIterator(); iter.hasNext();){ String name = (String)iter.next(); System.out.println("Name : " + name); }}
迭代器模式以顺序方式访问集合对象的元素,而不知道其底层表示。
迭代器模式是行为模式之一。
interface Iterator { public boolean hasNext(); public Object next(); } class LetterBag { public String names[] = {"R" , "J" ,"A" , "L"}; public Iterator getIterator() { return new NameIterator(); } class NameIterator implements Iterator { int index; @Override public boolean hasNext() { if(index < names.length){ return true; } return false; } @Override public Object next() { if(this.hasNext()){ return names[index++]; } return null; } } } public class Main { public static void main(String[] args) { LetterBag bag = new LetterBag(); for(Iterator iter = bag.getIterator(); iter.hasNext();){ String name = (String)iter.next(); System.out.println("Name : " + name); } } }
上面的代码生成以下结果。
Java设计模式 - 外观模式外观模式隐藏了系统的复杂性。它为客户端提供了一个简单的接口,客户端使用接口与系统交互。外观模式是...
Java设计模式 - 桥接模式桥接模式将定义与其实现分离。它是一种结构模式。此模式涉及充当桥接的接口。桥使得具体类与接口实现者...
Java设计模式 - 中介者模式中介者模式减少多个对象之间的通信。此模式提供了一个处理不同类之间的所有通信的中介类。中介者模式...