0

不久前,我为表示建筑物内部(和之间)路径的导航图编写了一个编辑器。它存储在 Graph 类中。

例如,边缘存储在每个楼层的一个集合中,再加上一个用于楼层之间的集合。

要绘制它们(仅当前楼层)或将它们保存到磁盘(全部),我需要从外部获取它们。为此,我实现了 callWithAllEdges 和 callWithAllEdgesIn 等方法,后者采用参数来指定楼层。

这些方法采用了一个仿函数(至少我这样称呼它),然后用边缘调用它。

这就是绘制一层楼的边缘的样子:

graph.callWithAllEdgesIn(id, new Functor<Edge>() {
    public void call(Edge e) {
        drawEdge(g,e);
    }
});

当然,这有点啰嗦。可能是java的问题,而不是我的解决方案,我不知道。

另一种方法是创建一个方法,将对所有需要的边缘的引用放入一个新集合中,然后对其进行迭代,我猜。不过对我来说似乎有点不对劲。

我的问题是:我怎么能更好地解决这个问题?

4

1 回答 1

1

你目前的设计是完全合理的。另一种选择是提供一个 Iterable/Iterator。这样您就不需要将所有内容复制到新列表中,而是可以懒惰地逐步浏览您的内部列表。

于 2012-08-30T19:55:32.957 回答