設計模式之迭代模式

2022-05-12 04:03:30 字數 1949 閱讀 9066

class

baseiterator:

"""迭代器

"""def

__init__

(self, data):

self.

__data =data

self.tobegin()

deftobegin(self):

"""將指標移至起始位置

"""self.

__curidx = -1

deftoend(self):

"""將指標移至結尾位置

"""self.

__curidx = len(self.__data

)

defnext(self):

"""移動至下乙個元素

"""if(self.__curidx

< len(self.__data) - 1):

self.

__curidx += 1

return

true

else

: self.

__curidx += 1

return

false

defprevoius(self):

"""移動至上乙個元素

"""if(self.__curidx >0):

self.

__curidx -= 1

return

true

else

: self.

__curidx -= 1

return

false

defcurrent(self):

"""獲取當前的元素

"""return self.__data[self.__curidx] if (self.__curidx

< len(self.__data)) and self.__curidx >= 0 else

none

class

numbersequence:

"""生成乙個間隔為step的數字系列

"""def

__init(self, init, step, max=100):

self.

__data =init

self.

__step =step

self.

__max =max

def__iter__

(self):

return

self

def__next__

(self):

if(self.__data

< self.__data + self.__step

): temp = self.__data

self.

__data += self.__step

return

temp

else

:

raise

stopiteration

if__name__ == "

__main__":

print("

從前往後遍歷:")

iterator = baseiterator(range(10))

while

(iterator.next()):

customer =iterator.current()

print(customer, end="\t"

)

print

()

print("

從後往前遍歷:")

while

(iterator.prevoius()):

customer =iterator.current()

print(customer, end="

\t")

設計模式之迭代器模式

概念 提供一種方法順序訪問乙個聚合物件中各個元素,而又不需暴露該物件的內部表示。main 客戶 iproject,產品介面 cproject,產品類 iiterator,迭代器介面 iprojectiterator,產品迭代器介面 cprojectiterator,產品迭代器實現類 說明 cproj...

設計模式之迭代器模式

當你需要訪問乙個聚集物件,而且不管這些物件是什麼都需要遍歷的時候,而且可能對聚集有多種方式遍歷時,需要為遍歷不同的聚集結構提供如開始,下乙個,是否結束,當前哪一項等 統一介面,你就應該考慮用迭代器模式.提供一種方法順序訪問乙個聚合物件中各個元素,而又不暴露該物件的內部表示.uml設計圖 部分 ite...

設計模式之迭代模式(Iterator)

意圖 提供一種順序訪問乙個聚合物件中各個元素,而不需要暴露聚合物件內部行為。即將列表的訪問和遍歷從列表物件中分離出來,放入迭代器物件中。使遍歷和列表物件介面。可產生乙個列表物件可以復用多個迭代器 多種遍歷方式 乙個迭代器支援多個列表物件 多個列表物件由相同遍歷演算法,或者列表物件本身提供演算法差異部...