python
設計模式
迭代器模式
class Item: def __init__(self, name, price): self.name = name self.price = price def __str__(self): return "{}: $ {}".format(self.name, self.price)
class MenuIterator: def __init__(self, items): self.indx = 0 self.items = items def has_next(self): return False if self.indx >= len(self.items) else True def next(self): item = self.items[self.indx]
self.indx += 1
return item def remove(self): return self.items.pop()
class Menu: def __init__(self): self.items = [] def add(self, item): self.items.append(item) def iterator(self): return MenuIterator(self.items)
i1 = Item("spaghetti", 7.50) i2 = Item("hamburger", 6.00) i3 = Item("chicken sandwich", 6.50)
menu = Menu() menu.add(i1) menu.add(i2) menu.add(i3)
print("Displaying Menu:") iterator = menu.iterator() while iterator.has_next(): item = iterator.next() print(item)
print("Removing last item returned")
iterator.remove() print("Displaying Menu:") iterator = menu.iterator() while iterator.has_next(): item = iterator.next() print(item)
程式碼說明
定義物件、定義迭代器、定義被迭代物件menu,實作物件、menu,開始迭代,移除某一物件,再次迭代。
這種做法不是python官方建議做法,官方建議做法是使用collections函式庫去作。
留言
張貼留言