java - 确保对象构建前或构建时的有效性

标签 java oop

我正在建模一辆有颜色的汽车。 我想确保颜色是有效的。因此,我在 Car 类中创建了一个嵌套枚举来保存有效的颜色。我想了解这个想法:

  1. 人们应该如何制造汽车?
    • 公开枚举。并在构造函数中期望一个枚举值。这确保了有效的颜色。
    • 枚举是我的!我的类(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/

相关文章:

Java批量插入循环需要时间附加代码吗?

javascript - JavaScript 中是 constructor.prototype != __.proto.__ 吗?

c# - 业务逻辑应该放在 Controller /模型/ View 项目中的什么位置

java - 将部分数据标记为超链接、iText

java - 如何为 libGDX 桌面应用程序设置应用程序图标?

java - 构建这个复杂对象的设计模式

python - 如何在类启动中删除不需要的参数?

java - 解析使用空格作为分隔符的文件 -java.lang. (我不明白)

Javafx 阶段为空

java.io.IOException : Couldn't get lock for 异常