Skip to content

组合模式

组合模式(Composite Design Pattern)

组合模式 VS 组合关系

组合模式跟我们之前讲的面向对象设计中的“组合关系(通过组合来组装两个类)”,完全 是两码事。

组合关系是面向对象编程中的一种基本概念,它描述了一个对象由多个其他对象组成的关系,这些成员对象可以是其他对象、值类型或集合类型。通过组合关系,对象可以实现更复杂的行为,从而增强其灵活性和可重用性。

组合模式是一种常用的设计模式,它允许客户端以统一的方式处理组合对象和叶子对象。在组合模式中,我们可以将对象组织成树形结构,并将其表示为一个包含父节点和子节点的层次结构。这样,客户端可以通过一个统一的接口来遍历整个树形结构,无需知道每个节点的具体类型,从而简化了客户端代码的实现。

需要注意的是,组合关系和组合模式虽然有关联,但并不等同于。组合关系是面向对象编程的基本概念之一,而组合模式是一种通用的设计模式,它使用组合关系来实现对象之间的组合关系,但并不是唯一的实现方式。因此,在使用组合模式时,我们应该根据具体的需求和场景选择合适的关系类型来实现对象之间的组合关系。

定义

Compose objects into tree structure to represent part-whole hierarchies.Composite lets client treat individual objects and compositions of objects uniformly.

将一组对象组织(Compose)成树形结构,以表示一种“部分-整体”的层次结构。组合让客户端可以统一单个对象和组合对象的处理逻辑。

ps:“客户端”代指代码的使用者。

场景

  • 使用组合模式的前提在于,你的业务场景必须能够表示成树形结构。所以,组合模式的应用场景也比较局限,它并不是一种很常用的设计模式。

  • 组合模式,将一组对象,通过添加一个抽象的方式。组织成树形结构,将单个对象和组合对象都看做树中的节点,以统一处理逻辑,并且它利用树形结构的特点,递归地处理每个子树,依次简化代码实现。