| 要在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系 |
| 计算机学院 |
| 系=> 数组中 |
| |
| 信息工程学院 |
| 系=> 集合 |

| 1) 将学院看做是学校的子类,系是学院的子类,这样实际上是站在组织大小来进行分层次的 |
| 2) 实际上我们的要求是 :在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系, 因此这种方案,不能很好实现的遍历的操作 |
| 3) 解决方案:=> 迭代器模式 |
| 1) 迭代器模式(Iterator Pattern)是常用的设计模式,属于行为型模式 |
| 2) 如果我们的集合元素是用不同的方式实现的,有数组,还有java的集合类,或者还有其他方式,当客户端要遍历这些集合元素的时候就要使用多种遍历方式,而且还会暴露元素的内部结构,可以考虑使用迭代器模式解决。 |
| 3) 迭代器模式,提供一种遍历集合元素的统一接口,用一致的方法遍历集合元素,不需要知道集合对象的底层表示,即:不暴露其内部的结构 |
-
原理类图

-
角色职责说明
| 1) Iterator:迭代器接口,是系统提供,含义 hasNext, next, |
| 2) ConcreteIterator: 具体的迭代器类,管理迭代 |
| 3) Aggregate: 一个统一的聚合接口, 将客户端和具体聚合解耦 |
| 4) ConcreteAggreage: 具体的聚合持有对象集合,并提供一个方法,返回一个迭代器,该迭代器可以正确遍历集合 |
| 5) Client: 客户端,通过 Iterator 和 Aggregate 依赖子类 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)