📜  复合方法 - Python设计模式(1)

📅  最后修改于: 2023-12-03 15:08:10.155000             🧑  作者: Mango

复合方法 - Python设计模式

介绍

复合方法(Composite Pattern)是一种组合模式,用于将对象组合成树形结构以表示层次结构。该模式允许客户端使用单个对象或组合对象,使得使用单一对象和组合对象具有一致性。本文将介绍复合方法在Python设计模式中的应用。

实现

我们可以通过Python中的类来实现复合方法。首先,我们需要一个抽象基类,称为组件(Component),它定义了所有组件的通用行为。

from abc import ABC, abstractmethod

class Component(ABC):
    @abstractmethod
    def operation(self):
        pass

然后,我们需要实现一个具体的组件(ConcreteComponent),它表示单个对象。

class ConcreteComponent(Component):
    def operation(self):
        return "ConcreteComponent"

接下来,我们需要实现一个组合(Component),用于表示树形结构中的节点。

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):
        results = []
        for child in self.children:
            results.append(child.operation())
        return f"Composite({', '.join(results)})"

在组合(Component)中,我们使用了一个列表来存储子组件。我们还覆盖了operation方法,用于遍历子组件并返回组合结果。

最后,我们可以用以下方式使用组件:

single = ConcreteComponent()
composite = Composite()

composite.add(single)
composite.add(single)

print(single.operation())    # 输出: ConcreteComponent
print(composite.operation()) # 输出: Composite(ConcreteComponent, ConcreteComponent)
总结

复合方法(Composite Pattern)用于将对象组合成树形结构以表示层次结构。它允许客户端使用单个对象或组合对象,使得使用单一对象和组合对象具有一致性。在Python中,我们可以使用类来实现复合方法,具体组件(ConcreteComponent)用于表示单个对象,组合(Component)用于表示树形结构中的节点。