本文实例讲述了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)
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。