二十三种设计模式(java版)之Iterator
来源:互联网 发布:笔记本重置网络设置 编辑:程序博客网 时间:2024/06/05 18:47
元素:
1、Interator(迭代器)
提供访问和遍历元素的接口。一般包含hasNext和next方法。
2、ConcreteInterator(具体迭代器)
实现迭代器的接口,其中包含容器的实例,以遍历其中具体的元素,其中还需要有标记当前元素位置的变量。
3、Aggregate(聚合)
提供获取容器迭代器的接口函数。
4、ConcreteAggregate(具体聚合)
实现获取容器迭代器的接口,它其实就是被遍历的容器。
类图:
代码示例:
Aggregate.java
package Interface;public interface Aggregate {public abstract Iterator iterator();}
public interface Iterator {public abstract boolean hasNext();public abstract Object next();}
Student.java
public class Student {private String name = "";public Student(String name){this.name = name;}public String getName(){return this.name;}}
ClassRoom.java
public class ClassRoom implements Aggregate{private Student[] students;private int last = 0;private int maxsize;public ClassRoom(int maxsize){this.students = new Student[maxsize];this.maxsize = maxsize;}public Student getStudentAt(int index){return students[index];}public void addStudent(Student stu){if(last<maxsize){this.students[last] = stu;last++;}elseSystem.out.println("max");}public int getSize(){return this.maxsize;}@Overridepublic Iterator iterator() {// TODO Auto-generated method stubreturn new ClassRoomIterator(this);}}
ClassRoomIterator.java
public class ClassRoomIterator implements Iterator{private ClassRoom classroom;private int index;public ClassRoomIterator(ClassRoom cr){this.classroom = cr;this.index = 0;}@Overridepublic boolean hasNext() {// TODO Auto-generated method stubif(index<this.classroom.getSize())return true;elsereturn false;}@Overridepublic Object next() {// TODO Auto-generated method stubStudent stu = this.classroom.getStudentAt(index);index++;return stu;}}
Main.java
public class Main {public static void main(String[] args){ClassRoom cr = new ClassRoom(4);cr.addStudent(new Student("a"));cr.addStudent(new Student("b"));cr.addStudent(new Student("c"));cr.addStudent(new Student("d"));Iterator it = cr.iterator();while(it.hasNext()){Student stu = (Student)it.next();System.out.println(stu.getName());}}}
- 二十三种设计模式(java版)之Iterator
- 二十三种设计模式(java版)之Adapter
- 二十三种设计模式(java版)之Template Method
- 二十三种设计模式(java版)之Factory Method
- Java二十三种设计模式
- 设计模式之二:iterator
- Java设计模式之二十三(状态模式)
- (二十三)Java设计模式之访问者模式
- 二十三种设计模式(android版)
- java设计模式之Iterator
- Java设计模式之Iterator
- Java开发中的23种设计模式之二十三:解释器模式(Interpreter)
- java中的二十三种设计模式之1---单例模式
- 二十三种设计模式之观察者模式简述
- 二十三种设计模式之单例模式
- 二十三种设计模式之装饰者模式
- 二十三种设计模式之工厂模式
- 二十三种设计模式之命令模式
- C#与js之间的相互调用
- android的ndk开发入门示例
- (难) attack_1804
- 加油
- 3-Joomla基本应用
- 二十三种设计模式(java版)之Iterator
- Using MongoDB/GridFS and Spring Data
- android 动态加载类 注意
- qobject_cast用法
- 推荐一个很好的在线管理文献的工具Zotero
- QTE4支持中文字体
- adb流水账
- Unity3D博客及论坛合集
- MySQL存储过程