我对 OOP 比较陌生。有时我会遇到不确定方法应该去哪里的情况。我将尝试举一个最小的例子;我希望我不要太过分,不要让它过于抽象。
假设我有一个保存点位置的 Point
类和一个保存直线方程的 Line
类。我现在需要一种方法来计算 Point
和 Line
之间的(垂直)距离。我可以这样做:
- Point::distance_to_line(L 线)
- Line::distance_to_point(P点)
- 独立函数:point_line_distance(Line L, point P)
一般来说,OOP 中是否有首选方式,或者它是否依赖于语言?在 C++ 中,独立函数是一个选项,但根据我对 Java 的有限理解,它不允许独立函数。在那种情况下,您会创建一个类似 PointLineDistanceCalculator
的类吗?
最佳答案
不在 Point
或 Line
类中的其他地方的第三个选项是最佳选项。
Points
不必知道 Lines
,反之亦然。否则,它们将紧密耦合。
http://en.wikipedia.org/wiki/Loose_coupling
但是,可以有一些其他类知道这两者。
在 java 中,我可能会创建第三个 Distance
类或 DistanceCalculator
来计算多个对象之间的距离。
Distance.between(Point a, Point b)
Distance.between(Point a, line l)
等等
关于java - 一个函数应该属于两个类中的一个/两个还是独立的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24873071/