当前位置: 首页 > news >正文

淄博学校网站建设报价/站长工具使用方法

淄博学校网站建设报价,站长工具使用方法,山西汽车网站建设,公司网站制作步骤流程图迭代器模式是一个我们经常使用但是出境不高的模式。 为啥捏?因为大部分的语言都帮我们实现了细节,我们不许关注他的实现就能用的很嗨皮了。 不管怎样。这也是个非常常用的模式. 俗话说得好,这个世界上没有事情是一顿撸串解决不了的&#xff0…

迭代器模式是一个我们经常使用但是出境不高的模式。

为啥捏?因为大部分的语言都帮我们实现了细节,我们不许关注他的实现就能用的很嗨皮了。

不管怎样。这也是个非常常用的模式.

 

俗话说得好,这个世界上没有事情是一顿撸串解决不了的,如果有,那就是两顿撸串。

那么,我们今天的故事就从撸串说起。

 

众人在撸串中.大师兄一拍桌子.来来来...大家一起走一个...干!!!了....

众人都干了...

一分钟后...大师兄一拍桌子.来来来...大家一起走一个...干!!!了....

众人又干了.....

一分钟后...大师兄一拍桌子.来来来...大家一起走一个...干!!!了....

众人纷纷尿了.....表示,太高能了...搞不下去了.....

 

又过了一分钟...大师兄说,你们真怂.....来来来,我挨个单挑你们这群战斗力为0的渣渣......

于是...大师兄按照顺时针方向挨个单挑....

first , 旭明,  next 帅哥,  next 志xin, next.....

谁也跑不了...

 

那么,这就是个迭代器模式.

---------------------------------------

 

概述:                                                                                                      

迭代器模式(Iterator):提供一种方法顺序一个聚合对象中各个元素,而又不暴露该对象内部表示。

实用场合:                                                                                                 

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

2.支持对聚合对象的多种遍历。

3.为遍历不同的聚合结构提供一个统一的接口(即,多态迭代)。

 

---------------------------------------

 

以上,是我抄得..

 

 

按照惯例,上例图.

 

 

so, 我们用python来实现这个过程.

 

# -*- coding: utf-8 -*-from abc import ABCMeta, abstractmethod#迭代器抽象类
class Iterator(object):__metaclass__ = ABCMetadef __init__(self):pass@abstractmethoddef Frist(self):pass@abstractmethoddef Next(self):pass@abstractmethoddef Isdone(self):pass@abstractmethoddef CurrentItem(self):pass#聚集抽象类
class Aggregate(object):__metaclass__ = ABCMetadef __init__(self):pass@abstractmethoddef CreateIterator(self):pass#迭代器具体实现类
class ConcreteIterator(Iterator):def __init__(self, concreteAggregate):self.__concreteAggregate = concreteAggregateself.__current = 0def Isdone(self):return True if self.__current >= self.__concreteAggregate.Count else Falsedef Next(self):self.__current += 1if self.__current < self.__concreteAggregate.Count:return self.__concreteAggregate.GetItem(self.__current)def CurrentItem(self):return self.__concreteAggregate.GetItem(self.__current)def Frist(self):return self.__concreteAggregate.GetItem(0)#实现聚集类
class ConcreteAggregate(Aggregate):Items = None#实现抽象方法def CreateIterator(self):return ConcreteAggregate()def __init__(self):ConcreteAggregate.Items = []@propertydef Count(self):return ConcreteAggregate.Items.__len__()def GetItem(self, index):return ConcreteAggregate.Items[index]if __name__ == "__main__":concreteAggregate = ConcreteAggregate()concreteAggregate.Items.append('xuming')concreteAggregate.Items.append('帅哥')concreteAggregate.Items.append('zhixin')concreteAggregate.Items.append('高峰')concreteAggregate.Items.append('创始人')concreteAggregate.Items.append('小灰灰')print "大师兄开始单挑了!!!....\n"iterator = ConcreteIterator(concreteAggregate)obj = iterator.Frist()while not iterator.Isdone():print "\n撸撸撸...  该你啦!", iterator.CurrentItem()print "这里假装在喝酒"print iterator.CurrentItem(), "假装喝完了"print "大师兄休息几秒钟...\n", "*" * 10iterator.Next()


运行结果:

 

最后再说两句:

这是一个非常常用的模式,但是它太常用了,所以很多语言都内置了该模式,

这反而让我们觉得这是个冷门的模式了.

 

比如.net framework 已经准备好了迭代器接口,只需要实现接口就行了

IEumerator 支持对非泛型集合的简单迭代

上面的例子用一个foreach就可以实现

其实吧, foreach 关键字就是一个语法糖, 背后实现的原理就是迭代器模式.

另外我们可以使用yield 关键字来简化迭代.

详见:

https://msdn.microsoft.com/zh-cn/library/65zzykke(v=vs.100).aspx

以上,就是迭代器模式。

希望对你有所帮助.

to be continued.

 

转载于:https://www.cnblogs.com/kakaliush/p/5327293.html

http://www.lbrq.cn/news/780175.html

相关文章:

  • 网站改版原则/免费淘宝关键词工具
  • 自己做网站排版/南宁seo优化公司排名
  • 汽车b2c网站建设/优化设计答案五年级上册
  • 微餐饮网站建设/武汉seo排名
  • 网站建设进度及实过程/站长之家工具高清
  • 网站除了做流量还需要什么软件/职业技能培训班
  • 东营企业网站建设/郑州网站建设制作
  • 网络服务合同纠纷司法解释/保定百度推广优化排名
  • 个人设计师网站 青春/网站优化排名易下拉软件
  • 做预算查价格的网站是哪个好/公司优化是什么意思
  • html制作静态网站模板/链接推广
  • 正规的专业高端网站建设/百度关键词搜索排名帝搜软件
  • 怎么用axure做自适应网站/百度推广客户端app
  • 北京最大做网站的公司/营销的主要目的有哪些
  • 织梦网站上传步骤/百度推广代理查询
  • wordpress千万数据/关键词自动优化
  • 做网站的那些高清图上哪里找/网站优化分析
  • 做网站需要掌握的软件/国家免费职业培训平台
  • 免费授权企业网站源码/seo整站优化方案案例
  • 做网站二级页面的/seo优化专家
  • 网站支付链接怎么做的/永久免费wap自助建站
  • wordpress手机版网页/抖音优化公司
  • 智慧政务门户网站建设/北京网站优化经理
  • 怎样做网站分析总结/免费seo推广软件
  • 如何查询网站主机信息/个人建网站步骤
  • 邯郸建设网站公司/网络营销软件商城
  • 做国外网站注册工作靠谱吗/快链友情链接平台
  • labview可以做网站吗/抖来查关键词搜索排名
  • 远程教育网站开发/近期新闻大事
  • IT做网站工资怎么样/品牌整合营销方案
  • Java基础-UDP通信实现一发一收
  • Codeforces 思维训练(二)
  • windows自动获取wsl IP,并开启端口转发。
  • GPT OSS 双模型上线,百度百舸全面支持快速部署
  • 使用Prometheus + Grafana + node_exporter实现Linux服务器性能监控
  • 构建一个简洁优雅的 PHP 参数验证器 —— php-schema-validator