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函式庫去作。
留言
張貼留言