设计模式 - 迭代器模式 - Itreator

2019-02-11  本文已影响0人  蜗牛写java

设计模式 - 迭代器模式 - Itreator

概念

​ 它提供一种方法访问一个容器对象中的各个元素,而不需要暴露该对象的内部细节

概念说明

UML

迭代器模式-UML.png

例子

​ 迭代器实现

public class ArrayIterator implements Iterator<String> {
    private BookArray bookArray;
    private int index;
    public ArrayIterator(BookArray bookArray) {
        this.bookArray = bookArray;
    }
    @Override
    public boolean hasNext() {
        if (index < bookArray.size()) {
            return true;
        } else {
            return false;
        }
    }
    @Override
    public String next() {
        return bookArray.getBook(index++);
    }
    @Override
    public void remove() {
        // TODO Auto-generated method stub
    }
}

​ 容器实现

public class BookArray implements Iterable<String>{
    private String[] books;
    private int index;
    public BookArray(int arraySize) {
        books = new String[arraySize];
    }
    @Override
    public Iterator<String> iterator() {
        return new ArrayIterator(this);
    }
    public void addBook(String book) {
        if (index > books.length)
            throw new RuntimeException("index out of array size!");
        this.books[index++] = book;
    }
    public String getBook(int index) {
        if (index > books.length - 1)
            throw new RuntimeException("index out of array size!");
        return books[index];
    }
    public int size() {
        return books.length;
    }
}

​ 测试类

public static void main(String[] args) {
        BookArray bookArray = new BookArray(4);
        bookArray.addBook("java编程思想");
        bookArray.addBook("java核心技术");
        bookArray.addBook("设计模式之禅");
         bookArray.addBook("Spring实战");
        Iterator<String> iterator = bookArray.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
    }

​ 输出

java编程思想
java核心技术
设计模式之禅
Spring实战

上一篇 下一篇

猜你喜欢

热点阅读