【发布时间】:2023-04-07 01:31:01
【问题描述】:
【问题讨论】:
-
展示你的实现
标签: java design-patterns composite
【问题讨论】:
标签: java design-patterns composite
叶子是这样实现的:
public class Leaf{
private List<Leaf> leaves;
......
}
为此,您理想情况下不需要任何其他设计模式。
您可以将其视为经理和员工之间的关系。
作为员工的经理可以拥有在该经理手下工作的员工列表。
public class Employee{
private List<Employee> workingUnderHim;
......
}
【讨论】:
Leaf 只是一片叶子,它对其他叶子一无所知。您给出的示例具有误导性,因为您只有一个 Employee 类,它同时是叶子和复合物,但没有说明一般情况。
我看到你从 wikipedia 中获取了类图,但遗憾的是它是错误的。这个是准确的,关于 GoF 书:
如您所见,Component 和 Composite 之间的关联并不相同:
Composite 聚合 Components(例如,您可以将它们存储在列表中)Leaf没有孩子另外,Composite 有一个方法 getChild(int n) 来获取第 n 个子组件(您可以简单地获取上一个列表的第 n 个元素)
要获取给定根组件的所有叶子,我想您可以使用其中一种Tree Traversal 算法。
【讨论】: