实现“结构查看器”

比较插件提供对实现您自已的内容查看器的充分支持:

区分器

Differencer 是分层结构数据的求差引擎。它接收两个或三个输入并对它们执行双向或三向比较。

如果求差引擎的输入元素实现了 IStructureComparator 接口,则该引擎以递归方式将其本身应用于输入元素的子代。叶元素必须实现 IStreamContentAccessor 接口,以便区分器执行对其内容的字节比较。

有几个示例较好地演示了包括在平台实现中的区分器:

缺省情况下,求差引擎将比较操作的结果作为 DiffNode 对象树返回。DiffNode 描述两个或三个输入之间的更改。可以通过覆盖引擎的单个方法来更改结果结点的类型。

差别查看器

可以将 DiffNode 树显示在 DiffTreeViewer 中。 DiffTreeViewer 要求树的内部节点实现 IDiffContainer 接口并且各叶实现 IDiffElement 接口。

比较分层结构数据和显示差别的典型步骤如下:

  1. 将输入数据映射到对象树内将实现 IStructureComparatorIStreamContentAccessor 接口
  2. 通过 Differencer 执行比较操作,并且
  3. 将差别结果送入 DiffTreeViewer
StructureDiffViewer 是一个专用的 DiffTreeViewer,它使上面这些步骤自动化。它接收单个类型为 ICompareInput 的输入对象,并从中检索两个或三个要进行比较的输入元素。它使用 IStructureCreator 来从中抽取包含 IStructureComparatorIStreamContentAccessor 对象的树。然后,将这些树与求差引擎作比较,并将结果显示在树查看器中。

ZipFileStructureCreatorIStructureCreator 接口的实现,并以 IStructureComparator 的分层结构的形式提供 ZIP 归档文件的内容,求差引擎 (Differencer)可以很容易地比较它。这个示例很好地演示了如何使结构化文件可供比较插件的分层比较功能使用。

Copyright IBM Corp. and others 2000,2002.