复合图案

时间:2010-03-12 16:21:26

标签: oop design-patterns composite

我对复合图案有疑问。

基类“Component”是否像“Composite”类中指向叶子对象的指针一样?

修改 让我用下面的话来问我的问题。 “Composite和Component类之间的关系是什么?”

这是模式的uml类图。

alt text

3 个答案:

答案 0 :(得分:3)

复合材料与组件之间的关系:

1)Leaf和Composite通常实现一个接口或一个抽象类。在图中,它们扩展了Component。因此,图表上的关系是继承

2)Composite包含Component的实例。组件(有时可以是Composite)也可以包含Component的实例。这称为递归合成。通常,该关系称为聚合

答案 1 :(得分:1)

<强>组件

  • 是所有组件的抽象,包括复合组件
  • 声明合成中对象的接口
  • (可选)定义用于在递归结构中访问组件父级的接口,并在适当的情况下实现它

<强>叶

  • 表示合成中的叶对象
  • 实现所有组件方法

<强>组合

  • 表示复合组件(具有子组件的组件)
  • 实现操纵孩子的方法
  • 实现所有Component方法,通常是将它们委托给子级

http://en.wikipedia.org/wiki/Composite_pattern

答案 2 :(得分:0)

所有容器和容器类都声明与接口“是一个”关系(组件)。

所有容器类都声明与接口的一对多“有”关系。

更多here