Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 复合模式:根是简单的复合模式吗?_Java_Design Patterns_Composite - Fatal编程技术网

Java 复合模式:根是简单的复合模式吗?

Java 复合模式:根是简单的复合模式吗?,java,design-patterns,composite,Java,Design Patterns,Composite,为了在Java中实现复合模式,我有一个抽象类组件,其中包含函数getChild(inti),add(Component c),remove(Component c),forAllDo()和getChildren() 它由Leaf和Composite两个类实现 Leaf几乎为每个函数都抛出了一个异常-只有forAllDo()对它做了一些处理。 您将如何实现根目录? 我将它理解为一个普通的复合类——所有函数都具有相同的意义。你有没有不属于这种情况的参数?简而言之:组件应该是一个接口,而不是一个抽象类

为了在Java中实现复合模式,我有一个抽象类组件,其中包含函数
getChild(inti)
add(Component c)
remove(Component c)
forAllDo()
getChildren()

它由Leaf和Composite两个类实现

Leaf几乎为每个函数都抛出了一个异常-只有
forAllDo()
对它做了一些处理。 您将如何实现根目录?
我将它理解为一个普通的复合类——所有函数都具有相同的意义。你有没有不属于这种情况的参数?

简而言之:
组件
应该是一个接口,而不是一个抽象类
Leaf
Composite
都实现了
组件
接口。因此,对于客户端来说,根是否是叶是无关紧要的,因为它实现了
组件
接口。如果树中只有一个元素,则根是叶,因为没有复合对象的意义。在其他情况下,它会变成一个组合。Root必须是一个
组合
,才能构建层次结构。在组合上操作的客户机不需要知道层次结构,直到客户机在您的
Composite
类中的
abstract
方法上操作为止,使用abstract类应该可以