在使用 Composition-Composite 类时保留列表结构
当使用 Composition-Composite 类时,如果你想保留列表结构,你可以通过在组合对象中使用列表来存储子对象。这样,你可以在组合对象中添加、移除和访问子对象,并保持子对象的顺序。以下是一个示例:
class Component:
def operation(self):
pass
class Composite(Component):
def __init__(self):
self.children = []
def add(self, component):
self.children.append(component)
def remove(self, component):
self.children.remove(component)
def operation(self):
for child in self.children:
child.operation()
class Leaf(Component):
def operation(self):
print("Leaf operation")
# 创建组合对象
composite = Composite()
# 创建叶节点对象
leaf1 = Leaf()
leaf2 = Leaf()
# 将叶节点添加到组合对象中
composite.add(leaf1)
composite.add(leaf2)
# 调用组合对象的操作方法
composite.operation()
在上述示例中,我们定义了一个 Component
基类,并实现了 Composite
和 Leaf
类。Composite
类使用列表 self.children
来存储子对象,并提供了 add
和 remove
方法来添加和移除子对象。Composite
类还覆盖了 operation
方法,遍历所有子对象并调用它们的 operation
方法。Leaf
类实现了 operation
方法,用于表示叶节点的操作。
通过使用列表来存储子对象,我们可以保留它们的顺序,并对它们进行操作。在上述示例中,我们创建了一个 Composite
对象,并向其添加了两个 Leaf
对象。当调用 composite.operation()
时,它会遍历所有子对象,并调用它们的 operation
方法。
这样,使用 Composition-Composite 类时,你可以保留列表结构,并在组合对象中对子对象进行操作。