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

来源:互联网 发布:淘宝旗舰店会有假货吗 编辑:程序博客网 时间:2024/05/22 00:49
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编程思想
 

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

原创粉丝点击