迭代器模式

迭代器模式(Iterator Pattern)
问题:
在面向对象的软件设计中,经常会遇到一些聚集对象,按一定的顺序的遍历访问问题,这个遍历算法究竟应该由谁来实现呢,聚集对象本身?这样聚集对象承受了过多的功能,不仅要维护聚集对象内的元素,还要提供遍历自身的接口,而且由于遍历状态保存的问题,不能对同一个容器对象同时进行多个遍历,这不符合单一职责原则。如果将遍历算法交给客户端,会将容器的内部细节暴露无遗,而且客户端与聚集对象高度耦合。分离了集合对象的遍历行为,将遍历算法交给这个迭代器角色来完成,可以很好的避免容器内部细节的暴露,而且也使得设计符合“单一职责原则”,另外迭代器模式抽象了具体迭代器角色,可以通过对一个抽象迭代器多个集成可来完成同一聚集对象的多种遍历。

定义:
迭代器(Iterator)模式,又叫做游标(Cursor)模式。
提供一种方法顺序访问一个聚合对象(或容器对象:container)中各个元素, 而又不需暴露该对象的内部表示。


意图:
分离了集合对象的遍历行为,将遍历算法交给这个迭代器角色来完成,可以很好的避免容器内部细节的暴露,而且也使得设计符合“单一职责原则”,另外迭代器模式抽象了具体迭代器角色,可以通过对一个抽象迭代器多个集成可来完成同一聚集对象的多种遍历。

参与者:
•迭代器角色(Iterator):
定义访问和遍历元素的接口。
•具体迭代器角色(Concrete Iterator):
关联到被迭代的具体聚集挖掘机对象角色,继承迭代器角色实现具体的迭代,并负责管理记录遍历中的当前位置。
•聚集对象抽象角色(Aggregate):
责提供创建具体迭代器角色的接口。
•具体聚集对象角色(Concrete Aggreate):
持有一个对象的集合,实现创建具体迭代器角色的接口,返回集合遍历所依赖的一个迭代器。

posted on 2012-06-27 21:55  n2012y5r8  阅读(169)  评论(0编辑  收藏  举报

导航