迭代器模式提供了一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。
下面我们利用java自带的迭代器接口实现这个迭代器模式
首先我们定义一个自定义的集合类,并实现它的迭代器
public class Book { public Book(String name, Double price) { this.name = name; this.price = price; } /** * 名称 */ private String name; /** * 价格 */ private Double price; public String getName() { return name; } public void setName(String name) { this.name = name; } public Double getPrice() { return price; } public void setPrice(Double price) { this.price = price; } }
public class MyCollection { private List<Book> dataList = new ArrayList<>(); public void add(Book data) { dataList.add(data); } public void remove(Book data) { dataList.remove(data); } public MyIterator getIterator() { return new MyIterator(this.dataList); } }
public class MyIterator implements Iterator<Book> { private List<Book> dataList; private int index; public MyIterator(List<Book> dataList) { this.dataList = dataList; index = 0; } @Override public boolean hasNext() { return index < dataList.size(); } @Override public Book next() { return dataList.get(index++); } }
测试
public static void main(String[] args) { MyCollection collection = new MyCollection(); collection.add(new Book("SQL从删库到跑路",66.6)); collection.add(new Book("JAVA从入门到放弃",88.8)); MyIterator iterator = collection.getIterator(); while (iterator.hasNext()) { Book book = iterator.next(); System.out.println("书名:"+ book.getName() + ",售价:" + book.getPrice()); } }
结果