首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >这耦合不好吗?

这耦合不好吗?
EN

Stack Overflow用户
提问于 2015-08-21 01:16:31
回答 2查看 97关注 0票数 2

我正试图解决3D空间中的路径规划问题,并取得了成功,但我不知道我的解决方案是否有足够的松耦合。我有三个源文件,每个都包含一个公共类: Vertex.java、VertexHeuristicComparator.java和PathPlanningUtil.java。

顶点包含三个字段:三维空间中的Point (location)、对另一个顶点的引用(parent)和保持目标顶点(distToGoal)距离的float。在路径规划中使用一个顶点集合来探索环境并找到最佳路径。

VertexHeuristicComparator实现了Comparator<Vertex>。我已经超越了compareTo方法,在比较中使用了distToGoalparent。该方法有效地定义了什么是最佳顶点,以便路径规划能够对搜索进行优先排序。

PathPlanningUtil包含planPath(Point start, Point goal)方法。此方法返回表示从开始到目标的3D空间中的路径的ArrayList<Vertex>。该方法使用VertexHeuristicComparator来确定如何通过探索VertexHeuristicComparator确定的“最低”顶点来探索环境。

因为VertexHeuristicComparator是路径规划逻辑的核心。更改VertexHeuristicComparator源代码将导致planPath返回不同的路径。对VertexHeuristicComparator的更改会不会严重地改变planPath的输出?

EN

Stack Overflow用户

发布于 2015-08-21 02:01:55

我对耦合的一般理解是,它更多的是不依赖于特定的实现,而不是一般的接口--例如,显式地返回或要求一个ArrayList而不是一个列表,或者对特定事物的使用进行硬编码,使其在逻辑链中深入。

对于您的特定示例,我可能建议的是让您的路径规划接受启发式使用的参数(作为比较器)。这将阻止您实现路径规划,具体取决于您为比较器编写的类,并允许客户端(在本例中为您的主程序)提供它希望用作启发式的比较策略。

因此,为了在代码示例中总结这一点,我将使路径规划方法具有一个签名,类似于:

List<Vertex> planPath(Point start, Point goal, Comparator<Vertex> heuristic)

并让调用计划路径的方法成为引用您的VertexHeuristicComparator类的方法,使用它作为启发式参数。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32130932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档