Python 디자인 모델 의 조합 모델 원리 와 용법 사례 분석

본 논문 의 사례 는 Python 디자인 모델 의 조합 모델 원리 와 용법 을 서술 하 였 다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
조합 모드(Composite Pattern):대상 을 트 리 구조 로 조합 하여'부분-전체'의 차원 구 조 를 나타 내 고 조합 모드 는 사용자 가 하나의 대상 과 조합 대상 에 대한 사용 을 일치 하 게 한다.
다음은 그룹 모드 의 demo 입 니 다.

#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'Andy'
"""
      
    ――    
    (Composite Pattern):              “  -  ”     ,                          .
"""
#        
class Component(object):
  def __init__(self, name):
    self.name = name
  def add(self,comp):
    pass
  def remove(self,comp):
    pass
  def display(self, depth):
    pass
#     
class Leaf(Component):
  def add(self,comp):
    print '        '
  def remove(self,comp):
    print '        '
  def display(self, depth):
    strtemp = ''
    for i in range(depth):
      strtemp += strtemp+'-'
    print strtemp+self.name
#    
class Composite(Component):
  def __init__(self, name):
    self.name = name
    self.children = []
  def add(self,comp):
    self.children.append(comp)
  def remove(self,comp):
    self.children.remove(comp)
  def display(self, depth):
    strtemp = ''
    for i in range(depth):
      strtemp += strtemp+'-'
    print strtemp+self.name
    for comp in self.children:
      comp.display(depth+2)
if __name__ == "__main__":
  #    
  root = Composite("root")
  #    2   
  root.add(Leaf('leaf A'))
  root.add(Leaf('leaf B'))
  #      Composite X
  comp = Composite("Composite X")
  comp.add(Leaf('leaf XA'))
  comp.add(Leaf('leaf XB'))
  root.add(comp)
  #      Composite X
  comp2 = Composite("Composite XY")
  #Composite X  2   
  comp2.add(Leaf('leaf XYA'))
  comp2.add(Leaf('leaf XYB'))
  root.add(comp2)
  #      2   ,C D,D   ,  
  root.add(Leaf('Leaf C'))
  leaf = Leaf("Leaf D")
  root.add(leaf)
  root.remove(leaf)
  #    
  root.display(1)

실행 결 과 는 다음 과 같 습 니 다.

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

응용 필드:
부분 과 전체 차원 의 구 조 를 구현 해 야 할 때
사용자 가 조합 대상 과 단일 대상 의 차 이 를 무시 하고 조합 구조의 모든 대상 을 통일 적 으로 사용 할 때
더 많은 파 이 썬 관련 내용 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.
본 논문 에서 말 한 것 이 여러분 의 Python 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기