绥化市建设工程网站招投标,外国人做的关于中国的视频网站吗,wordpress单页面制作,什么类型网站一、介绍#xff1a;
1、定义#xff1a;迭代器模式 (Iterator Pattern) 是一种行为型设计模式#xff0c;它提供一种顺序访问聚合对象#xff08;如列表、集合等#xff09;中的元素#xff0c;而无需暴露聚合对象的内部表示。迭代器模式将遍历逻辑封装在一个迭代器对象…一、介绍
1、定义迭代器模式 (Iterator Pattern) 是一种行为型设计模式它提供一种顺序访问聚合对象如列表、集合等中的元素而无需暴露聚合对象的内部表示。迭代器模式将遍历逻辑封装在一个迭代器对象中使得我们可以使用统一的方式遍历不同类型的聚合对象同时也可以简化客户端代码。
2、组成 1抽象聚合 (Aggregate) 定义存储、添加、删除聚合元素以及创建迭代器对象的接口。 2具体聚合 (ConcreteAggregate) 实现抽象聚合类返回一个具体迭代器的实例。 3抽象迭代器 (Iterator) 定义访问和遍历聚合元素的接口通常包含 hasNext()、next() 等方法。 4具体迭代器 (Concretelterator) 实现抽象迭代器接口中所定义的方法完成对聚合对象的遍历记录遍历的当前位置。
二、demo
1、
package com.demo.ddq.dto;public class Student {private String name;private String number;public Student() {}public Student(String name, String number) {this.name name;this.number number;}Overridepublic String toString() {return Student{ name name \ , number number \ };}/**省略所有set、get方法*/
}
1抽象迭代器
//抽象迭代器角色接口
public interface StudentIterator {//判断是否还有元素boolean hasNext();//获取下一个元素Student next();
}2具体迭代器
//具体迭代器角色类
public class StudentIteratorImpl implements StudentIterator{private ListStudent list;//用来记录遍历时的位置private int position 0;public StudentIteratorImpl(ListStudent list) {this.list list;}Overridepublic boolean hasNext() {return position list.size();}Overridepublic Student next() {//从集合中或者去指定位置的元素Student currentStudent list.get(position);position;return currentStudent;}
}
3抽象聚合
//抽象聚合(容器)角色接口
public interface StudentAggregate {//添加学生void addStudent(Student stu);//删除学生void removeStudent(Student stu);//获取迭代器对象StudentIterator getStudentIterator();
}
4具体聚合
public class StudentAggregateImpl implements StudentAggregate{private ListStudent list new ArrayList();Overridepublic void addStudent(Student stu) {list.add(stu);}Overridepublic void removeStudent(Student stu) {list.remove(stu);}//获取迭代器对象Overridepublic StudentIterator getStudentIterator() {return new StudentIteratorImpl(list);}
}
客户端
public class Test {public static void main(String[] args) {//创建聚合(容器)对象StudentAggregate aggregate new StudentAggregateImpl();Student student1 new Student(张三, 1001);Student student2 new Student(李四, 1002);Student student3 new Student(王五, 1003);Student student4 new Student(钱七, 1004);//添加元素aggregate.addStudent(student1);aggregate.addStudent(student2);aggregate.addStudent(student3);aggregate.addStudent(student4);//删除元素aggregate.removeStudent(student3);//遍历聚合对象// 1.获取迭代器对象StudentIterator iterator aggregate.getStudentIterator();// 2.遍历while (iterator.hasNext()) {// 3.获取元素Student student iterator.next();System.out.println(student.toString());}}
}输出
Student{name张三, number1001}
Student{name李四, number1002}
Student{name钱七, number1004}