迭代器:例如 列表
迭代器模式 提供了一种方法能够顺序访问集合中的所有元素,而又不暴露集合内部的实现
迭代器的本质是实现了一种方式: 能够判断集合中是否还有未被访问的元素,以及提供访问这个元素的方式
代码实例# -*- coding: utf-8 -*-
# @File : 迭代器模式.py
# @Date : 2018-05-23
from abc import abstractmethod
# 定义迭代器
# 实现了两个方法,是否还有未被访问的元素和下一个未被访问的元素
class Iterator(object):
def __init__(self):
pass
@abstractmethod
def has_next(self):
pass
@abstractmethod
def next(self):
pass
# 一个书架上摆满了书,我们需要查找某本书时,就用到了迭代器模式
# 定义书本, 名称和编号
class Book(object):
def __init__(self, name, number):
self.name = name
self.number = number
# 书架定义
# 书架实现了增加书目,查找index位置的数目以及总共的图书数目这几个方法
class BookShelf(object):
def __init__(self):
self.books = []
def append_book(self, book):
self.books.append(book)
def get_book_at(self, index):
return self.books[index]
def get_length(self):
return self.books.__len__()
# Iterator的具体实现
class BookShelfIterator(Iterator):
def __init__(self, book_shelf):
self.book_shelf = book_shelf
self.index = 0
def has_next(self):
if self.index
关注
打赏