什么是守护者代码?

时间:2017-05-09 15:33:44

标签: java definition

我的讲师开始在我们的阅读材料中提到一些叫做守护者代码的东西。如果有帮助,这是一个Java初学者模块。以下是文中的一些参考资料。

  

由于没有mutator,因此没有mutator监护代码,因此监护人代码被强制进入构造函数(作为对validateDate(...)私有帮助器方法的调用)。构造函数通常会调用mutator来检查接收到的初始值,因为构造函数参数在为它们分配各自的实例变量之前是有效的。

非常感谢任何帮助

谢谢!

2 个答案:

答案 0 :(得分:3)

该文本指的是提供参数验证的代码,“防止”对象进入不良状态。

Fox示例,如果您要构建一个名为String的{​​{1}}属性的类,其长度必须为7到9个字符,那么您可以添加这样的setter:

serialNumber
上面代码段中的

void setSerialNumber(String sn) { if (sn == null || sn.length() < 7 || sn.length() > 9) { throw new IllegalArgumentException("sn"); } serialNumber = sn; } 是“监护人代码”。教科书说,当课程可变时,这个监护人代码会进入制定者。但是,当类是不可变的时,您将此代码移动到构造函数中:

if

答案 1 :(得分:1)

您的讲师可能意味着保护代码。这增加了一个额外的防御层验证,以确保您接收或发送的数据不会以任何方式无效。通常,编写保护代码以确保它们所需的值不是null(以防止NullPointerException s),或者在预期范围内 - 尽管这是对验证的更广泛讨论。 / p>

作为一个例子,如果我正在编写一个名为boolean validateDate(Date date)的方法,我写的一段保护代码是:

public boolean validateDate(Date date) {
    if(null == date) {
        throw new IllegalArgumentException("Date can't be null");
    }
    // other logic to follow
}