在哪里放置检查图中两条边是否平行的方法?

Where to place a method which checks if two edges are parallel in a graph?

我对在何处放置检查图中两条边是否平行的方法存在分歧。

在下面看到的 UML class 图中,我已将我的建议放在注释中。

图中描述了一个图由边和顶点组成。 如果两条边与相同的顶点关联(两条边和所有顶点必须属于同一个图),则它们是平行的。

我的建议是(横向排列):

我的问题是:支持和反对我的三个提议的论点是什么?

我不会将其作为图形的方法(它不是图形的 属性)。 我更喜欢 isParallelTo,因为无论如何你都必须有 Edge 的实例,而且似乎不需要静态方法(它与 equals() 或 compareTo() 方法非常相似)。

如果相同的边可能不平行,具体取决于它们所在的图,当然将检查添加到 Graph 对象是有意义的,因为它可以决定给定的是否边平行。

我肯定会选择 isParallelTo(Edge b)

可能原因:

  • 因为显然唯一需要决定它们是否平行的是边和它的顶点,而你不需要来自 Graph 的任何东西,我认为它不属于 Graph。 Graph 不知道确定并行性所需的任何东西。

  • 不能覆盖静态方法。如果您有需要覆盖 isParallelTo()

  • 的 Edge 子类,那将是一个问题

我会在 Edge 中使用两种非静态方法。一种方法是询问另一条边是否平行,另一种方法是询问另一条边是否连接到顶点。这两个方法都可以在子类中被重写,后者可以防止一条边通过另一条边的顶点来确定它是否平行。