工作积累之Iterator模式理解

来源:互联网 发布:java网站留言板源代码 编辑:程序博客网 时间:2024/05/19 21:16

GOF给出的定义为:提供一种方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的内部细节。从定义可见,迭代器模式是为容器而生。再看STL:其中的容器提供迭代器,算法使用迭代器。模式UML图:



对容器对象的各个元素的访问必然涉及到遍历算法,如果单单是为了不暴露该对象的内部细节,可以在容器对象中实现遍历算法,提供遍历自身的接口,但是为什么不这么做呢? 在这种情况下,容器承受了过多的功能,它不仅要负责自己容器内的元素维护(添加、删除等等),而且还要提供遍历自身的接口,这就违反了单一职责原则

而且由于遍历状态保存的问题,不能对同一个容器对象同时进行多个遍历。


原创粉丝点击