7

考虑我们有两个类LinePoint哪个类 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);
}
4

3 回答 3

10

绝对是第一个。它更高级,意图更清晰,更简洁,并且在对 Point 类的更改方面更易于维护。

于 2012-10-26T10:45:53.437 回答
2

我认为创建实例Points然后将其传递给构造函数会更好,而不是让构造函数多做一点工作。

所以,你应该选择第一个。这样,构造函数只需要使用传递的引用来初始化引用,而不是创建自己。

于 2012-10-26T10:47:08.820 回答
0

您可以同时使用它们,但如果您需要组合关联,则只需使用第二个。

于 2012-10-26T10:48:42.137 回答