访问Composite模式Java的叶子

时间:2016-11-30 18:32:47

标签: java design-patterns composite

我实现了Composite模式来表示图片中的元素树: enter image description here

但是如何访问这棵树的叶子,就像一张Leaf of List。我应该实施访客吗?

2 个答案:

答案 0 :(得分:0)

叶子实现如下:

public class Leaf{

  private List<Leaf> leaves;

  ......
}

为此你理想情况下不需要任何其他设计模式。

您可以将此视为经理员工之间的关系。

作为员工的经理可以拥有在该经理下工作的员工列表。

public class Employee{

  private List<Employee> workingUnderHim;

  ......
}

答案 1 :(得分:0)

我看到你已经从维基百科中获取了类图,但遗憾的是它错了。关于GoF书,这个是准确的:

https://github.com/ambethia/recaptcha/blob/master/CHANGELOG.md

如您所见,Recaptcha.configure do |config| config.site_key = 'public key' config.secret_key = 'private key' Component之间的关联并不相同:

  • Composite聚合Composite(例如,您可以将它们存储在列表中)
  • Component没有孩子

此外,Leaf有一个方法Composite来获取第n个子组件(您可以简单地获取上一个列表的第n个元素)

要获取给定根组件的所有叶子,我想您可以使用这些Composite Design Pattern算法之一。