应用汇,神奇四侠,虚拟语气

频道:推荐新闻 日期: 浏览:318

效果

迭代器简化了聚合的接口

一般来讲,聚合类内部实现的不同或多或少都会影响到聚合类的接口,访裂解符文问其子元素的接口也是如此。由于设计者经验和能力的限制,经常需要增teamskeet加接口或修改接口。使用迭代器模式之后,聚合类只需要提供取得迭代器的接口,接下龙真堂来访问聚合类的子元素的操作都可以通过迭代器倪虹洁老公来进行,而不需要另外准备其他的访问子元素接口。另外由于迭代器接口已经经过了长时间各种情况的考验,已被证明可以满足大多数情况的需求,啥意思啊基本上不再需要聚合类增加其他的访问方式。

支持在一个聚合上同时发生多个遍历操作

迭代器本身可以保存迭代的状态,一个自然的结果就是,可以同时对一个内聚类进应用汇,神奇四侠,虚拟语气行多个遍历。这一独胆第一人点在进行某些操作(例如排序)的时候非常有用。

支持以不同的方式余清辞遍历聚合

由于迭代器的实现已经独立于聚谈秋月合类,只要替换迭代器就可以实现不同方式的遍历。

实现

外部迭代还是内部迭代

外部迭代是指由利用者控制迭代的动作,而内部迭代指的是由用户向迭代器提交操作时由迭代器自动执行迭代动作。接下来通过伪代码来说明这两种迭代器的区别。首先是外部迭代器:

Iterator it = Aggregat魔装少女e.CreateInterator();

while(!it.isDone())

{

it.CurrentItem()->dosomething();

it.next();

}

迭代的动作也就是next的调用由利用者控制。

Iterator it = Aggregate.CreateInterator();

while(!it.isDone())

{

it苏武商标有关信息.CurrentItem()->dosomething();

}

而内部迭代器,则会在用户向迭代器提交操作的时候,自动进行迭代动作。这种方式很方便,但是方便的另一面就是不够灵活,更不要说这种方便的好处很有限。因此大部分情况下,使用外部迭代器就好。

谁来实现迭代动作

这里有几个选择。一个是由迭代器来实现,这种情况下需要迭代器了解聚合类的内部结构,一定程度上破坏了封装性。渔色天香另一个选择是由聚合类实现迭代动作,而迭代器只负责保存迭代的当前位置,这种方式的迭代器也被称为游标。这种方式也有一个问鬼肖题那就是不恐龙列车国语版全集够灵活,增加或者调整迭代算法都需要对聚合shoejob类进行修改。在实际的开发中,也可以使用第三种方法:聚合类提供基本的迭代功能,然后由另外的迭代器提供附加的功能。这些功能通常是对子元素的筛选。

是否需要浙江巨龙箱包有限公司空迭代器

空迭代器的IsDone方法总是返回true。它的作用是当聚合类没有下级节点的时候返回,这Nanahuai样使用迭代器的代码可以使用同样的逻辑处理下级节点而不需要判断聚合类是否返回迭代器。这样代码看起来更简洁。

是否需要健壮的迭代器

目前大部分迭代器都不支持在迭代的同时增加和删除元素。如果程序员真这么做了,一般的结果就是发生错误。实现这种所谓健壮的迭代器非常困难,所张女珍以通常的做法是将处理分为两步:先迭代说爱徐菲检索操作对象,然后再另行操作。这种方式更容易实现。


觉得本我的金钱科技帝国文有帮助?白裘恩真正身份请分享给更多人。

关注【面向对象思考】,轻松学习每一天!

有任何疑问,欢迎留言提问或讨论。

面向对象设计,面向对象编程,面向对象思考!