目录
一、迭代器模式的定义与类型
- 一、迭代器模式的定义与类型
- 二、迭代器模式的适用场景
- 三、迭代器模式的优点
- 四、迭代器模式的缺点
- 五、迭代器模式的相关设计模式
- 六、迭代器模式示例
- 七、迭代器模式在JDK源码中的应用
1、定义
- 提供一种方法,顺序访问一个集合对象中的各个元素,而又不暴露该对象的内部表示
2、类型
- 行为型
- 访问一个集合对象的内容而无需暴露它的内部表示
- 为遍历不同的集合结构提供一个统一的接口
- 分离了集合对象的遍历行为
- 类的个数成对增加
- 迭代器模式和访问者模式
以课程为例进行代码演示
1、代码结构如下:
2、创建一个课程实体类
package com.rf.designPatterns.behavioral.iterator;
/**
* @description: 创建一个课程实体类
* @author: xz
*/
public class Course {
private String name;//课程名称
//构造方法
public Course(String name) {
this.name = name;
}
//getter方法
public String getName() {
return name;
}
}
3、创建课程迭代器接口类
package com.rf.designPatterns.behavioral.iterator;
/**
* 课程迭代器接口类
*/
public interface CourseIterator {
//获取下一个课程
Course nextCourse();
//判断是否是最后一门课程
boolean isLastCourse();
}
4、创建课程迭代器实现类
package com.rf.designPatterns.behavioral.iterator;
import java.util.List;
/**
* @description: 课程迭代器实现类
* @author: xz
*/
public class CourseIteratorImpl implements CourseIterator{
private List courseList;//课程集合
private int position;//课程位置
private Course course;//课程
//构造方法
public CourseIteratorImpl(List courseList) {
this.courseList = courseList;
}
//重写获取下一个课程方法
@Override
public Course nextCourse() {
System.out.println("返回课程的位置是:"+position);
course= (Course) courseList.get(position);
position++;
return course;
}
//重写是否是最后一个课程方法
@Override
public boolean isLastCourse() {
if(position
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?