最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python設計模式之組合模式原理與用法實例分析

 更新時間:2019年01月11日 09:56:31   作者:Andy冉明  
這篇文章主要介紹了Python設計模式之組合模式,結(jié)合具體實例形式分析了Python組合模式的相關概念、原理、定義及使用方法,需要的朋友可以參考下

本文實例講述了Python設計模式之組合模式原理與用法。分享給大家供大家參考,具體如下:

組合模式(Composite Pattern):將對象組合成成樹形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu),組合模式使得用戶對單個對象和組合對象的使用具有一致性.

下面是一個組合模式的demo:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'Andy'
"""
大話設計模式
設計模式——組合模式
組合模式(Composite Pattern):將對象組合成成樹形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu),組合模式使得用戶對單個對象和組合對象的使用具有一致性.
"""
# 抽象一個組織類
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
# 葉子節(jié)點
class Leaf(Component):
  def add(self,comp):
    print '不能添加下級節(jié)點'
  def remove(self,comp):
    print '不能刪除下級節(jié)點'
  def display(self, depth):
    strtemp = ''
    for i in range(depth):
      strtemp += strtemp+'-'
    print strtemp+self.name
# 枝節(jié)點
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)

運行結(jié)果如下:

上面類的設計如下圖:

應用場景:

在需要體現(xiàn)部分與整體層次的結(jié)構(gòu)時

希望用戶忽略組合對象與單個對象的不同,統(tǒng)一的使用組合結(jié)構(gòu)中的所有對象時

更多關于Python相關內(nèi)容可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進階經(jīng)典教程

希望本文所述對大家Python程序設計有所幫助。

相關文章

最新評論

阿克| 普宁市| 信丰县| 嘉兴市| 湘乡市| 桂阳县| 德阳市| 安平县| 莆田市| 桐梓县| 和田市| 女性| 道孚县| 鲜城| 中宁县| 保定市| 沾化县| 莆田市| 扎兰屯市| 武威市| 曲沃县| 台中县| 长汀县| 呼玛县| 凌海市| 资溪县| 五家渠市| 萨嘎县| 酉阳| 丘北县| 抚宁县| 贡觉县| 理塘县| 炉霍县| 阳曲县| 宁强县| 平远县| 安远县| 彩票| 黑水县| 方正县|