我一直想知道哪种方法最好:
1)
包裹:cars.blue
课程:CarOne.java
,CarTwo.java
包裹:cars.red
课程:CarOne.java
,CarTwo.java
2)
包裹:cars.blue
课程:BlueCarOne.java
,BlueCarTwo.java
包裹:cars.red
课程:RedCarOne.java
,RedCarTwo.java
3)
包裹:cars
课程:BlueCarOne.java
,BlueCarTwo.java
,RedCarCone.java
,RedCarTwo.java
方法1:将汽车类拆分为不同的包。
方法2:似乎有点过载,因为汽车类已经可以通过包来区分。但是当你只看一下类名时,前缀是一个优势,并且不需要第二次查看它来查看它所属的位置。
方法3:将所有车辆扔在一个包裹中。
哪种方法最好?
答案 0 :(得分:4)
我会选择方法3.因为所有汽车都在同一个包中(所有域类都在一起)。有争议的问题,每个人都可能有自己的兴趣。除了基于用例的判断之外,AFAIK没有预先定义的约定。
答案 1 :(得分: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
的方法或字段。
干杯, 米甲
答案 2 :(得分:1)
可能你应该创建封装功能块的包。颜色的区别并不意味着任何功能差异,因此我也会选择选项3。
答案 3 :(得分:1)
方法1主要是当两个包互相排斥时,即在汽车有一个共同界面的情况下,红色和蓝色被编译成单独的JAR,并且只有一个这两个JAR一次出现。当两个软件包都存在时,这个命名就会令人困惑。
方法2和3几乎相同,因为名称彼此之间存在很大差异。创建一个单独的包(方法2)可能是也可能不是一种过度杀伤,这取决于你的应用程序中使用两组类的方式。
答案 4 :(得分:1)
否则我会使用model
/ pojo
/ domain
包,例如:
package model;
class Car {
private String carColor; //Blue, Red
private String carType; // One, Two
// getter and setters
}