【发布时间】:2015-11-14 20:16:01
【问题描述】:
我正在尝试解决 3D 空间中的路径规划问题并且已经成功,但我不知道我的解决方案是否具有足够的松散耦合。我有三个源文件,每个都包含一个公共类:Vertex.java、VertexHeuristicComparator.java 和 PathPlanningUtil.java。
Vertex 包含三个字段:3D 空间中的 Point (location)、对另一个顶点的引用 (parent) 和保存到目标顶点距离的 float (distToGoal)。在路径规划中使用顶点集合来探索环境并找到最佳路径。
VertexHeuristicComparator 实现Comparator<Vertex>。我已经覆盖了 compareTo 方法以在比较中使用 distToGoal 和 parent。该方法有效地定义了最佳顶点是什么,以便路径规划可以优先搜索。
PathPlanningUtil 包含方法planPath(Point start, Point goal)。此方法返回一个ArrayList<Vertex>,表示 3D 空间中从起点到目标的路径。此方法使用VertexHeuristicComparator 来确定如何通过探索 VertexHeuristicComparator 确定为“最低”顶点的顶点来探索环境。
因为VertexHeuristicComparator 是路径规划逻辑的核心。更改 VertexHeuristicComparator 源代码将导致 planPath 返回不同的路径。更改 VertexHeuristicComparator 以彻底改变 planPath 的输出是不是耦合不好?
【问题讨论】:
-
是否有某些原因您不能使用Strategy pattern(如果需要)来换取不同的
Comparator?
标签: java