【迭代器模式】 迭代器可以顺序访问一个聚集中的元素而不必显露聚集的内部对象。多个对象聚在一起形成的总体称为聚集,聚集对象是能够包容一组对象的容器对象。迭代器模式 将迭代逻辑封装到一个独立的对象中,从而与聚集本身隔开。迭代算法独立于聚集对象,修改迭代算法不会对聚集对象产生任何影响,实现程序的松耦合。
1.Aggregate接口所声明的方法只有iterator方法一个,这是为了建立一个对对应聚合的
iterator
Java代码
1. package com.pattern.iterator;
2.
3. public interface Aggregate {
4. public abstract Iterator iterator();
5. }
2.iterator接口,执行元素递增,具有类似循环变量的功能。
Java代码
1. package com.pattern.iterator;
2. public interface Iterator {
3. public abstract boolean hasNext();
4. public abstract Object next();
5. }
3. 书籍类
Java代码
1. package com.pattern.iterator;
2. public class Book {
3. private String name="";
4.
5. public Book(String name) {
6. this.name = name;
7. }
8.
9. /**
10. * 获得书籍名称
11. * @return String
12. */
13. public String getName() {
14. return name;
15. }
16. }
4.书架类
Java代码
1. package com.pattern.iterator;
2. /**
3. * 书架类
4. * @author administrator
5. */
6. public class BookShelf implements Aggregate{
7. private Book[] books;
8. private int last = 0;
9.
10. public BookShelf(int maxSize) {
11. this.books = new Book[maxSize];
12. }
13.
14. public Book getBookAt(int index) {
15. return books[index];
16. }
17.
18. //添加书籍
19. public void appendBook(Book book) {
20. this.books[last] = book;
21. last++;
22. }
23. //获得书架存书的数量
24. public int getLength() {
25. return books.length;
26. }
27. //获得书架迭代器对象
28. public Iterator iterator() {
29. return new BookShelfIterator(this);
30. }
31.
32. }
5.书架迭代器类
Java代码
1. package com.pattern.iterator;
2. public class BookShelfIterator implements Iterator{
3. private BookShelf bookShelf;
4. private int index;
5.
6. public BookShelfIterator(BookShelf bookShelf) {
7. this.bookShelf = bookShelf;
8. this.index = 0;
9. }
10.
11. //检查是否还有下一本书
12. public boolean hasNext() {
13. if(index < bookShelf.getLength()) {
14. return true;
15. }
16. else {
17. return false;
18. }
19. }
20. //返回指定位置的书籍
21. public Object next() {
22. Book book = bookShelf.getBookAt(index);
23. index ++;
24. return book;
25. }
26. }
6.测试类
Java代码
package com.pattern.iterator;
public class Main {
public static void main(String[] args) {
//生成一个书架
BookShelf bookShelf = new BookShelf(4);
//向书架添加书籍
bookShelf.appendBook(new Book("Effective Java"));
bookShelf.appendBook(new Book("J2EE"));
bookShelf.appendBook(new Book("Head First Design Pattern"));
bookShelf.appendBook(new Book("Thinking in Java"));
//获得书架迭代器
Iterator it = bookShelf.iterator();
while(it.hasNext()) {
Book book = (Book)it.next();
System.out.println(book.getName());
}
}
}
分享到:
相关推荐
设计模式的迭代器模式的例子,希望对大家有用~~~~~~~~
设计模式之迭代器模式 设计模式之迭代器模式 设计模式之迭代器模式
迭代器模式Demo
23种设计模式之迭代器模式对迭代器模式进行了简单的介绍,并附带了例子程序,和大家分享
设计模式-迭代器模式(讲解及其实现代码)
迭代器模式的示例代码和文档,学习迭代器模式的参考资料。
一个聚合对象,如一个列表(List)或者一个集合(Set),应该提供一种方法来让别人可以访问它...怎样遍历一个聚合对象,又不需要了解聚合对象的内部结构,还能够提供多种不同的遍历方式,这就是迭代器模式所要解决的问题。
使用composite模式构成二叉树,并用迭代器模式封装访问,前序、中序和后序的遍历。JAVA 编写。 Main中直接运行
迭代器模式demo
C#面向对象设计模式 (行为型模式) Iterator 迭代器模式 视频讲座下载
设计模式--迭代器模式java例子
迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。 那么一般在什么时候才会用迭代器模式呢?当你需要访问一个聚集对象,而且不管这些对象是什么都需要遍历的时候...
java设计模式--迭代器模式,理解这个例子就完全理解迭代器啦
迭代器(Iterator) 用意:可以顺序地访问一个集合中的元素而不必暴露集合中的内部表象。
Headfirst第九章迭代器模式C++实现代码 ,并附加相应的UML类图
迭代器模式(Iterator Pattern)是设计模式中的一种行为模式,它允许顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。迭代器模式提供了一种方法,可以顺序地访问一个聚合对象中的各个元素,而又...
【Java设计模式】(1)迭代器模式Iterator(代码)