我試圖解決3D空間中的路徑規劃問題並取得了成功,但我不知道我的解決方案是否有足夠的鬆散耦合。我有三個源文件,每個文件都包含一個公共類:Vertex.java,VertexHeuristicComparator.java和PathPlanningUtil.java。這是不是偶合?
頂點包含三個字段:在3D空間中的Point
(location
),到另一個頂點(parent
)的引用和float
保持的距離的目標頂點(distToGoal
)。在路徑規劃中使用頂點集合來探索環境並找到最佳路徑。
VertexHeuristicComparator執行Comparator<Vertex>
。在比較中,我重寫了compareTo方法以使用distToGoal
和parent
。該方法有效地定義了最佳頂點,以便路徑規劃可以優先搜索。
PathPlanningUtil包含方法planPath(Point start, Point goal)
。此方法返回代表從開始到目標的3D空間中的路徑的ArrayList<Vertex>
。此方法使用VertexHeuristicComparator
來確定探索環境的方式,方法是探索VertexHeuristicComparator確定爲「最低」頂點的頂點。
由於VertexHeuristicComparator
是路徑規劃邏輯的核心。更改VertexHeuristicComparator源代碼將導致planPath
返回不同的路徑。對VertexHeuristicComparator進行更改以徹底更改planPath
的輸出是否會造成不良耦合?
有沒有理由不能使用[策略模式](https://en.wikipedia。org/wiki/Strategy_pattern)(如果需要)在不同的'Comparator'中交換? –