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

1.Aggregate接口所声明的方法只有iterator方法一个,这是为了建立一个对对应聚合的 
iterator 

Java代码
package com.pattern.iterator;  
  
public interface Aggregate {  
    public abstract Iterator iterator();  
}  


2.iterator接口,执行元素递增,具有类似循环变量的功能。 

Java代码
package com.pattern.iterator;  
public interface Iterator {  
    public abstract boolean hasNext();  
    public abstract Object next();  
}  



3. 书籍类 

Java代码
package com.pattern.iterator;  
public class Book {  
    private String name="";  
  
    public Book(String name) {  
        this.name = name;  
    }  
      
    /** 
     * 获得书籍名称 
     * @return String 
     */  
    public String getName() {  
        return name;  
    }  
}  


4.书架类 

Java代码
package com.pattern.iterator;  
/** 
 * 书架类 
 * @author administrator 
 */  
public class BookShelf implements Aggregate{  
    private Book[] books;  
    private int last = 0;  
      
    public BookShelf(int maxSize) {  
        this.books = new Book[maxSize];  
    }  
      
    public Book getBookAt(int index) {  
        return books[index];  
    }  
      
    //添加书籍  
    public void appendBook(Book book) {  
        this.books[last] = book;  
        last++;  
    }  
    //获得书架存书的数量  
    public int getLength() {  
        return books.length;  
    }  
                //获得书架迭代器对象  
    public Iterator iterator() {  
        return new BookShelfIterator(this);  
    }  
      
}  

5.书架迭代器类 

Java代码
package com.pattern.iterator;  
public class BookShelfIterator implements Iterator{  
    private BookShelf bookShelf;  
    private int index;  
      
    public BookShelfIterator(BookShelf bookShelf) {  
        this.bookShelf = bookShelf;  
        this.index = 0;  
    }  
      
    //检查是否还有下一本书  
    public boolean hasNext() {  
        if(index < bookShelf.getLength()) {  
            return true;  
        }  
        else {  
            return false;  
        }  
    }  
    //返回指定位置的书籍  
    public Object next() {  
        Book book = bookShelf.getBookAt(index);  
        index ++;  
        return book;  
    }  
}  



6.测试类 

Java代码
package com.pattern.iterator;  
  
public class Main {  
    public static void main(String[] args) {  
        //生成一个书架  
        BookShelf bookShelf = new BookShelf(4);  
        //向书架添加书籍  
        bookShelf.appendBook(new Book("周恩来的晚年岁月"));  
        bookShelf.appendBook(new Book("C++网络编程"));  
        bookShelf.appendBook(new Book("J2EE网络编程精解"));  
        bookShelf.appendBook(new Book("Java编程思想"));  
          
        //获得书架迭代器  
        Iterator it = bookShelf.iterator();  
        while(it.hasNext()) {  
            Book book = (Book)it.next();  
            System.out.println(book.getName());  
        }  
    }  
}  
输出结果: 

周恩来的晚年岁月 
C++网络编程 
J2EE网络编程精解 
Java编程思想
 

迭代器设计恩想: 
      迭代器可以顺序访问一个聚集中的元素而不必显露聚集的内部对象。多个对象聚在一起形成的总体称为聚集,聚集对象是能够包容一组对象的容器对象。迭代器模式 将迭代逻辑封装到一个独立的对象中,从而与聚集本身隔开。迭代算法独立于聚集对象,修改迭代算法不会对聚集对象产生任何影响,实现程序的松耦合。

你可能感兴趣的:(java,设计模式,迭代器模式)