Python 디자인 모델 의 교체 기 모델 원리 와 용법 사례 분석

본 논문 의 사례 는 Python 디자인 모델 의 교체 기 모델 원리 와 용법 을 서술 하 였 다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
교체 기 모드(Iterator Pattern):취 합 대상 의 각 요 소 를 순서대로 방문 하고 이 대상 의 내부 표 시 를 드 러 내지 않 습 니 다.
다음은 교체 기 모드 의 demo 입 니 다.

#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'Andy'
"""
      
    ――     
     (Iterator Pattern):                  ,             .
"""
#      
class Iterator(object):
  def First(self):
    pass
  def Next(self):
    pass
  def Isdone(self):
    pass
  def CurrItem(self):
    pass
#     
class Aggregate(object):
  def CreateIterator(self):
    pass
#      
class ConcreteIterator(Iterator):
  def __init__(self, aggregate):
    self.aggregate = aggregate
    self.curr = 0
  def First(self):
    return self.aggregate[0]
  def Next(self):
    ret = None
    self.curr += 1
    if self.curr < len(self.aggregate):
      ret = self.aggregate[self.curr]
    return ret
  def Isdone(self):
    return True if self.curr+1 >= len(self.aggregate) else False
  def CurrItem(self):
    return self.aggregate[self.curr]
#     
class ConcreteAggregate(Aggregate):
  def __init__(self):
    self.ilist = []
  def CreateIterator(self):
    return ConcreteIterator(self)
class ConcreteIteratorDesc(Iterator):
  def __init__(self, aggregate):
    self.aggregate = aggregate
    self.curr = len(aggregate)-1
  def First(self):
    return self.aggregate[-1]
  def Next(self):
    ret = None
    self.curr -= 1
    if self.curr >= 0:
      ret = self.aggregate[self.curr]
    return ret
  def Isdone(self):
    return True if self.curr-1<0 else False
  def CurrItem(self):
    return self.aggregate[self.curr]
if __name__=="__main__":
  ca = ConcreteAggregate()
  ca.ilist.append("  ")
  ca.ilist.append("  ")
  ca.ilist.append("  ")
  ca.ilist.append("  ")
  itor = ConcreteIterator(ca.ilist)
  print itor.First()
  while not itor.Isdone():
    print itor.Next()
  print "――――  ――――"
  itordesc = ConcreteIteratorDesc(ca.ilist)
  print itordesc.First()
  while not itordesc.Isdone():
    print itordesc.Next()

실행 결과:

상류의 디자인 은 다음 과 같다.

모 으 기 에 여러 가지 방식 이 필요 할 때 교체 기 모드 를 사용 하 는 것 을 고려 할 수 있다.
교체 기 모드 는 집합 하 는 옮 겨 다 니 는 행 위 를 분리 하고 하나의 교체 기 류 를 추상 화하 여 책임 을 집 니 다.그러면 집합 내부 구 조 를 드 러 내지 않 을 뿐만 아니 라 외부 코드 가 내부 데 이 터 를 투명 하 게 방문 하여 집합 할 수 있 습 니 다.
더 많은 파 이 썬 관련 내용 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.
본 논문 에서 말 한 것 이 여러분 의 Python 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기