组合

组合模式主要用于表示对象的部分-整体层次的结构。组合后的对象与单个对象并无什么不同,组合结构中的所有对象将被统一的使用。

以下举一个简单的示例。

class Component:
	def __init__(self, name):
		self.str_name = name
	
	def add(self, com):
		pass
	
	def display(self, depth):
		pass


class Leaf(Component):
	def add(self, com):
		print("Leaf cannot add anything")
	
	def display(self, depth):
		strtemp = "-" * depth
		strtemp = strtemp + self.str_name
		print(strtemp)


class Branch(Component):
	def __init__(self, name):
		self.str_name = name
		self.c = []
	
	def add(self, com):
		self.c.append(com)
	
	def display(self, depth)
		strtemp = "-" * depth
		strtemp = strtemp + self. str_name
		print(strtemp)
		for com in self.c:
			com.display(depth+2)


root = Branch("root")
root.add(Leaf("leaf-1"))
root.add(Leaf("leaf-2"))
branch = Branch("branch-1")
branch.add(Leaf("dead leaf"))
root.add(branch)
root.display()