2

我一直想知道这些方法中哪一种是最好的:

1)

包:cars.blue 类:CarOne.javaCarTwo.java

包:cars.red 类:CarOne.javaCarTwo.java

2)

包:cars.blue 类:BlueCarOne.javaBlueCarTwo.java

包:cars.red 类:RedCarOne.javaRedCarTwo.java

3)

包裹:cars

类:BlueCarOne.java, BlueCarTwo.java, RedCarCone.java,RedCarTwo.java

方法 1:将汽车类拆分为不同的包。

方法 2:似乎有点过载,因为汽车类已经可以通过包来区分。但是当你只看类名时,前缀是一个优势,不需要再看它所属的位置。

方法3:将所有汽车放在一个包裹中。

哪种方法最好?

4

5 回答 5

4

我会采用方法 3。因为所有汽车都在同一个包中(所有域类放在一起)。有争议的问题,每个人都可能有自己的兴趣。AFAIK 除了基于用例的判断外,没有针对这些的预定义约定。

于 2012-09-05T12:45:22.133 回答
2

我认为这取决于您想要实现的目标,但您应该记住该软件包不仅用于分组内容。但是您也可以利用访问修饰符。

如果所有汽车类都应该可以访问某种方法,那么它们应该在一个包中,所以药水 3 很好。

package cars;  
public class BlueCarOne {
  void method() {}
}

package cars;

public class BlueCarTwo {
  void method() {}
}

package cars;

public class RedCarOne {
  void method() {}
}

package cars;

public class RedCarTwo {
  void method() {}
}

在这种情况下,只有cars包中的类才能调用method().

但是如果你想隐藏一些实现细节RedCar并将BlueCar它们放入不同的包中。并将应隐藏的方法或字段标记为package protected.

干杯,迈克尔

于 2012-09-05T12:51:23.197 回答
1

可能您应该创建封装功能块的包。颜色的区别并不真正意味着任何功能差异,因此我也会在这里选择选项 3。

于 2012-09-05T12:48:49.547 回答
1

方法 1 主要在两个包相互排斥的情况下很有用,即当汽车有一个共同的界面时,红色和蓝色被编译成单独的 JAR,并且一次只存在这两个 JAR 中的一个。当两个包都可能存在时,这个命名会令人困惑。

方法 2 和 3 几乎是等效的,因为它们的名称彼此完全不同。创建一个单独的包(方法 2)可能会也可能不会过大,这取决于在您的应用程序中使用两组类的方式。

于 2012-09-05T12:49:03.003 回答
1

否则我将有model//包,并执行以下操作pojodomain

package model;

class Car {
    private String carColor; //Blue, Red
    private String carType;  // One, Two

    // getter and setters

}
于 2012-09-05T12:49:05.813 回答