一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python設計模式之迭代器模式原理與用法實例分析

Python設計模式之迭代器模式原理與用法實例分析

2021-05-14 00:09Andy Python

這篇文章主要介紹了Python設計模式之迭代器模式原理與用法,結合具體實例形式分析了迭代器模式的概念、原理、定義及使用方法,代碼注釋說明簡單易懂,需要的朋友可以參考下

本文實例講述了python設計模式迭代器模式原理與用法。分享給大家供大家參考,具體如下:

迭代器模式(iterator pattern):提供方法順序訪問一個聚合對象中各元素,而又不暴露該對象的內部表示.

下面是一個迭代器模式的demo:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'andy'
"""
大話設計模式
設計模式——迭代器模式
迭代器模式(iterator pattern):提供方法順序訪問一個聚合對象中各元素,而又不暴露該對象的內部表示.
"""
#迭代器抽象類
class iterator(object):
  def first(self):
    pass
  def next(self):
    pass
  def isdone(self):
    pass
  def curritem(self):
    pass
#聚集抽象類
class aggregate(object):
  def createiterator(self):
    pass
#具體迭代器類
class concreteiterator(iterator):
  def __init__(self, aggregate):
    self.aggregate = aggregate
    self.curr = 0
  def first(self):
    return self.aggregate[0]
  def next(self):
    ret = none
    self.curr += 1
    if self.curr < len(self.aggregate):
      ret = self.aggregate[self.curr]
    return ret
  def isdone(self):
    return true if self.curr+1 >= len(self.aggregate) else false
  def curritem(self):
    return self.aggregate[self.curr]
#具體聚集類
class concreteaggregate(aggregate):
  def __init__(self):
    self.ilist = []
  def createiterator(self):
    return concreteiterator(self)
class concreteiteratordesc(iterator):
  def __init__(self, aggregate):
    self.aggregate = aggregate
    self.curr = len(aggregate)-1
  def first(self):
    return self.aggregate[-1]
  def next(self):
    ret = none
    self.curr -= 1
    if self.curr >= 0:
      ret = self.aggregate[self.curr]
    return ret
  def isdone(self):
    return true if self.curr-1<0 else false
  def curritem(self):
    return self.aggregate[self.curr]
if __name__=="__main__":
  ca = concreteaggregate()
  ca.ilist.append("大鳥")
  ca.ilist.append("小菜")
  ca.ilist.append("老外")
  ca.ilist.append("小偷")
  itor = concreteiterator(ca.ilist)
  print itor.first()
  while not itor.isdone():
    print itor.next()
  print "————倒序————"
  itordesc = concreteiteratordesc(ca.ilist)
  print itordesc.first()
  while not itordesc.isdone():
    print itordesc.next()

運行結果:

Python設計模式之迭代器模式原理與用法實例分析

上面類的設計如下圖:

Python設計模式之迭代器模式原理與用法實例分析

當需要對聚集有多種方式遍歷時,可以考慮使用迭代器模式

迭代器模式分離了集合的遍歷行為,抽象出一個迭代器類來負責,這樣既可以做到不暴露集合內部結構,又可以讓外部代碼透明的訪問集合內部的數據

希望本文所述對大家python程序設計有所幫助。

原文鏈接:https://www.cnblogs.com/onepiece-andy/p/python-iterator-pattern.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 2019自拍偷拍视频 | 亚洲天天综合网 | 大乳一级一区二区三区 | 无码精品一区二区三区免费视频 | 精品无人区麻豆乱码1区2 | 日本一区二区精品88 | 亚洲精品高清中文字幕完整版 | blackedhd 18sex| 男人爱看的网站 | 青青青国产精品国产精品久久久久 | 男人久久天堂 | 青青青在线观看国产精品 | 亚洲2017天堂色无码 | 歪歪私人影院成人毛片 | 小向美奈子av | a色在线 | 性欧美videofree中文字幕 | 91视频破解 | 性欧美videofree中文字幕 | 国产精品永久免费视频观看 | 99热这里只有精品国产免费 | 国产成人精品777 | 久久观看视频 | 日本高清中文字幕一区二区三区 | 久久精品国产色蜜蜜麻豆国语版 | 91制片厂制作果冻传媒2021 | 天天爽天天操 | 欧美日韩中文字幕在线视频 | 好男人资源大全免费观看 | 免费精品国产 | 99热国产在线 | 成人伊人青草久久综合网破解版 | 婷婷网址 | 久久国产乱子伦精品免费不卡 | 午夜一区二区福利视频在线 | 91制片厂制作传媒网站 | 天天舔天天干天天操 | 国产成人在线影院 | 99精品国产美女福到在线不卡 | 国产成人亚洲综合91精品555 | 精品国产91高清在线观看 |