在使用 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 方法,用于表示叶节点的操作。
Component
Composite
Leaf
self.children
add
remove
operation
通过使用列表来存储子对象,我们可以保留它们的顺序,并对它们进行操作。在上述示例中,我们创建了一个 Composite 对象,并向其添加了两个 Leaf 对象。当调用 composite.operation() 时,它会遍历所有子对象,并调用它们的 operation 方法。
composite.operation()
这样,使用 Composition-Composite 类时,你可以保留列表结构,并在组合对象中对子对象进行操作。