考虑我们有两个类Line
和Point
,其中类Line使用类Point
,如下所示:
public class Point {
private int x;
private int y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
}
和
public Class Line
{
private Point start;
private Point end;
...
}
我想知道由于OOP原则,下面的哪个构造函数更适合类Line?
public Line(Point start, Point end)
{
this.start = start;
this.end = end;
}
或
public Line(int startX, int startY, int endX, int endY)
{
start = new Point(startX, startY);
end = new Point(endX, endY);
}
答案 0 :(得分:10)
绝对是第一个。它更高级,意图更清晰,更简洁,并且对Point类的更改更易于维护。
答案 1 :(得分:2)
我认为创建Points
的实例然后将其传递给构造函数会更好,而不是让构造函数有一点额外的工作。
所以,你应该选择第一个。这样,构造函数只需要使用传递的引用初始化引用,而不是创建自己。
答案 2 :(得分:0)
您可以同时使用它们,但如果您需要composition只关联第二个。