python设计模式之组合模式(结构型)
意图
- 将对象组合成树形结构,以表示”部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性
适用性
- 你想表示对象的部分-整体层次结构
- 你希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象
例子如下
class Component(object):
def __init__(self, m_name):
self.m_name = m_name
def add(self, com):
pass
def display(self, depth):
pass
class 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_name
class 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)
*Wong
**Lee
**Zhao
**Wu
***San