python设计模式之迭代器模式

本文介绍了迭代器模式的概念,强调其在解耦算法与聚合对象中的作用,以及在Python中如何通过内置迭代器协议实现。通过MyIterator和MyCollection类的实例,展示了如何使用迭代器模式遍历集合对象的元素并提高代码复用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

设计模式

迭代器模式是一种行为型设计模式,它可以使我们遍历聚合对象中的元素而不必暴露它的内部表示。迭代器解耦了算法与聚合对象,使得对聚合对象的算法可以独立于聚合对象本身而变化,从而提高了代码的复用性和可维护性。

在这里插入图片描述

代码案例

在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对象的一次迭代。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值