迭代器模式: 类似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());
}
}
}
总的来说,迭代器模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以不暴露集合的内部结构,又可以让外部代码透明地访问集合内部的数据。迭代器模式在访问数组,集合,对数据库进行操作时使用的非常普遍,由于它太普遍了,所以各种高级语言都对它进行封装,所以给人感觉此模式本身不太常用。
分享到:
相关推荐
设计模式参考《大话设计模式》 工厂简单模式 创造型模式 工厂方法模式 抽象工厂模式 原型模式 建造者模式 单例模式 结构型模式 队列模式 桥接模式 组合模式 装饰模式 外观模式 享元模式 代理模式 行为模式(类行为...
Android之大话设计模式——:抽象工厂模式借鉴.pdf
二十三种设计模式二十三种设计模式二十三种设计模式
《大话设计模式》对各种设计模式,做简要归纳(原创)
本文实例讲述了Python设计模式之迭代器模式原理与用法。分享给大家供大家参考,具体如下: 迭代器模式(Iterator Pattern):提供方法顺序访问一个聚合对象中各元素,而又不暴露该对象的内部表示. 下面是一个迭代器模式...
android之大话设计模式.pdf
Android之大话设计模式——:抽象工厂模式参考.pdf
树懒自己整理的大话设计模式的修行笔记,对程序设计有很大的帮助,主要是以自己学习的习惯整理的!
大话设计模式之外观模式 经典代码 C#类
android之大话设计模式整理.pdf
大话设计模式源代码之简单工厂模式 经典代码
NULL 博文链接:https://helei050.iteye.com/blog/2086309
大话设计模式 完整设计模式介绍
Android之大话设计模式:抽象工厂模式终稿.pdf
大话设计模式总结.pdf大话设计模式总结.pdf大话设计模式总结.pdf大话设计模式总结.pdf大话设计模式总结.pdf
NULL 博文链接:https://linxingliang.iteye.com/blog/1217811
代码可以运行,下载这个后,建议买->《大话设计模式这本书》。来辅助学习。有很多关于C#语言有关的设计模式分别由: 1、模板方法模式 2、外观模式 3、建造者模式 4、观察者模式 5、抽象工厂模式 6、状态模式 7、...
设计模式之《大话设计模式》.pptx
大话设计模式之代理模式 经典代码 C#类
大话设计模式源代码之策略模式 经典代码 C#类