我有一个关于组合类图中常见的两个操作的问题:
* GetDescendents
* GetChild(int)
一个常见的例子是文件和目录,我们以此为例。假设我们感兴趣的操作是Size,那么File有一个实际的大小,而Directory有一个从GetDescendents递归迭代得出的Size。到目前为止还好。我的问题与客户端对GetDescendents的使用有关。比如说你需要某个操作中的目录中的图片文件。因此在实践中,你可以使用GetDescendents和Children的某种组合来返回imageFiles(取决于客户端是否想要所有嵌套的imageFiles还是只在根级别)。
所以第一个问题是,你不太可能在组合体上有一个GetImageFiles方法而不是让客户端自己想出来吧?并且假设如此,在组合之外,将GetDescendents暴露给客户端调用者(如ImageViewer)是否实用?
关于GetChild(int)的第二个问题:int是否是返回单个子项的序数位置索引?是GetDescendents的深度级别吗?客户端如何使用该方法的例子是什么?
祝好,
Berryl