工作积累之Iterator模式理解

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

工作积累之Iterator模式理解_第1张图片


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

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


你可能感兴趣的:(工作,算法,iterator,UML)