我正在建模一辆有颜色的汽车。 我想确保颜色是有效的。因此,我在 Car 类中创建了一个嵌套枚举来保存有效的颜色。我想了解这个想法:
- 人们应该如何制造汽车?
- 公开枚举。并在构造函数中期望一个枚举值。这确保了有效的颜色。
- 枚举是我的!我的类(class)的用户不需要知道它!我会让他给我一个字符串,我将解析该字符串以查找任何枚举值。如果无效,我将抛出异常
我更倾向于暴露。我有什么理由不想这样做吗?例如,创建汽车实例可能会让用户过于复杂? (尽管我猜他更喜欢这个而不是运行时异常)。
你说什么?
最佳答案
考虑工厂模式。您可以在那里隐藏所有检查和颜色处理代码,并且您的 Car
可以保持现在的样子(使用 Color
作为枚举参数)。工厂没有构造函数的限制,您可以随意为您的方法命名,例如:
public class CarFactory{
public static Car createRedCar() { return new Car(Color.RED); }
public static Car createBlueCar(){ return new Car(Color.BLUE); }
}
关于java - 确保对象构建前或构建时的有效性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23053085/