我正在阅读Bloch的Effective Java,现在我正处于第二项(Builder模式)。以下是他所说的:
与构造函数一样,构建器可以对其参数强加不变量。 构建方法可以检查这些不变量。
不变量是什么意思?你不能解释一下吗?
答案 0 :(得分:2)
据我所知,不变量只是参数的属性,它们总是正确的。例如,有人可能会说卡路里必须总是大于0.所以我相信这本书只是说构建方法可以检查它并在违反时抛出异常。
答案 1 :(得分:2)
不变量是简单的约束,不应该违反对象处于安全状态。
不变量可以像
一样简单:
它可以是复数/组合不变量,这意味着两个参数组合成一个有效的组合。例如。 -
simple regex check on some string property of a class.
对于简单的情况,构建器可以在构建器中的相应属性方法中检查不变量本身,如果它接受任何具有不变量的参数,则甚至可以检查构建器的构造函数。
对于组合不变量,可以在类中包含构建器的构造函数中完成检查。或者,构建器的构建方法也可以执行所有这样的组合不变验证。
我希望这可以为这个概念提供一些帮助。