设计模式
迭代器模式是一种行为型设计模式,它可以使我们遍历聚合对象中的元素而不必暴露它的内部表示。迭代器解耦了算法与聚合对象,使得对聚合对象的算法可以独立于聚合对象本身而变化,从而提高了代码的复用性和可维护性。
代码案例
在Python中,迭代器模式通常使用内置的迭代器协议实现。迭代器协议是一种Python语言内置的协议,用于表示迭代器对象,其具有__iter__和__next__两个方法。其中,__iter__方法返回迭代器对象本身,__next__方法返回下一个元素。如果没有更多的元素可供迭代,那么__next__方法应该抛出StopIteration异常。
下面是一个使用迭代器模式的示例代码:
class MyIterator:
def __init__(self, items):
self.index = 0
self.items = items
def __iter__(self):
return self
def __next__(self):
if self.index < len(self.items):
value = self.items[self.index]
self.index += 1
return value
else:
raise StopIteration
class MyCollection:
def __init__(self):
self.items = []
def add_item(self, item):
self.items.append(item)
def __iter__(self):
return MyIterator(self.items)
# 使用迭代器遍历聚合对象中的元素
collection = MyCollection()
collection.add_item('item 1')
collection.add_item('item 2')
collection.add_item('item 3')
for item in collection:
print(item)
在上述示例代码中,MyIterator类表示一个迭代器对象,用于遍历聚合对象中的元素。MyCollection类表示一个聚合对象,它能够添加元素,并且实现了__iter__方法,以便返回MyIterator对象。在主程序中,我们使用for循环遍历聚合对象中的元素,这里的for循环实际上是对MyIterator对象的一次迭代。