迭代器模式: 类似java中的Iterator类,提供一种方法顺序访问一个聚合对象中各个元素。
// 书籍类
public class Book {
private String name = "";
public Book(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
// 迭代器抽象类,执行元素递增,具有类似循环变量的功能
public interface Iterator {
public abstract boolean hasNext();
public abstract Object next();
}
// 书架迭代器类
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;
}
}
// 聚集抽象类
public interface Aggregate {
public abstract Iterator iterator();
}
// 具体聚集类
public class BookShelf implements Aggregate {
private Book[] books;
private int index = 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[index] = book;
index++;
}
public int getLength() { // 获得书架存书的数量
return books.length;
}
public Iterator iterator() { // 获得书架迭代器对象
return new BookShelfIterator(this);
}
}
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());
}
}
}
总的来说,迭代器模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以不暴露集合的内部结构,又可以让外部代码透明地访问集合内部的数据。迭代器模式在访问数组,集合,对数据库进行操作时使用的非常普遍,由于它太普遍了,所以各种高级语言都对它进行封装,所以给人感觉此模式本身不太常用。
分享到:
相关推荐
设计模式参考《大话设计模式》 工厂简单模式 创造型模式 工厂方法模式 抽象工厂模式 原型模式 建造者模式 单例模式 结构型模式 队列模式 桥接模式 组合模式 装饰模式 外观模式 享元模式 代理模式 行为模式(类行为...
大话设计模式总结.pdf大话设计模式总结.pdf大话设计模式总结.pdf大话设计模式总结.pdf大话设计模式总结.pdf
设计模式之《大话设计模式》.pptx
Android之大话设计模式——:抽象工厂模式借鉴.pdf
大话设计模式 完整设计模式介绍
《大话设计模式》C++实现-design-patterns-cpp
二十三种设计模式二十三种设计模式二十三种设计模式
读书笔记:大话设计模式C++
android之大话设计模式.pdf
《大话设计模式》对各种设计模式,做简要归纳(原创)
本文实例讲述了Python设计模式之迭代器模式原理与用法。分享给大家供大家参考,具体如下: 迭代器模式(Iterator Pattern):提供方法顺序访问一个聚合对象中各元素,而又不暴露该对象的内部表示. 下面是一个迭代器模式...
Android之大话设计模式——:抽象工厂模式参考.pdf
26种设计模式还包括其他如建造者模式、组合模式、享元模式、命令模式、模板方法模式、迭代器模式、访问者模式、备忘录模式、状态模式、解释器模式等,它们都有各自独特的作用和应用场景。掌握这些设计模式能够帮助...
树懒自己整理的大话设计模式的修行笔记,对程序设计有很大的帮助,主要是以自己学习的习惯整理的!
读书笔记:设计模式大话设计模式
大话设计模式之外观模式 经典代码 C#类
android之大话设计模式整理.pdf
单例模式是软件设计模式中的一种经典模式,它在许多场景下被广泛使用,尤其是在需要全局唯一实例的情况下。本文将深入探讨单例模式的概念、作用、实现方式以及其在实际编程中的应用。 单例模式的核心思想是确保一个...
大话设计模式源代码之简单工厂模式 经典代码
读书笔记:设计模式学习《大话设计模式》