python设计模式之组合模式

来源:互联网 发布:开淘宝网店的流程2016 编辑:程序博客网 时间:2024/06/06 02:33

python设计模式之组合模式(结构型)

意图

  • 将对象组合成树形结构,以表示”部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性

适用性

  • 你想表示对象的部分-整体层次结构
  • 你希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象

例子如下

# -*- coding:utf-8 -*-class Component(object):    def __init__(self, m_name):        self.m_name = m_name    def add(self, com):        pass    def display(self, depth):        passclass Leaf(Component):    def add(self, com):        print "leaf can't add"    def display(self, depth):        m_name = "*" * depth        m_name = m_name + self.m_name        print m_nameclass Composite(Component):    def __init__(self, m_name):        self.m_name = m_name        self.c = []    def add(self, com):        self.c.append(com)    def display(self, depth):        m_name = "*" * depth        m_name = m_name + self.m_name        print m_name        for com in self.c:            com.display(depth + 1)if __name__ == "__main__":    p = Composite("Wong")    p.add(Leaf("Lee"))    p.add(Leaf("Zhao"))    p1 = Composite("Wu")    p1.add(Leaf("San"))    p.add(p1)    p.display(1)# ouput*Wong**Lee**Zhao**Wu***San
原创粉丝点击