河北省网站建设_网站建设公司_数据统计_seo优化
2025/12/26 2:43:31 网站建设 项目流程

编程中的领域值与元对象协议

1. 领域值的处理

在编程中,我们可以实现一些进一步的概念,例如向有效值集合中添加所谓的“未定义”(底部)值和其他特殊值。这样做的好处是,我们可以像Ward Cunningham建议的那样,明确区分已定义值和特殊值。

例如,许多开发者在需要将未知的账户号码表示为整数时,会使用类似999这样的变通方法。这意味着按照惯例,他们将一个已定义的整数值变成了一个特殊的未定义值。然而,在不遵循此惯例的程序中就会出现问题,上述方法可能会导致严重的领域错误,而这类程序却无法捕获这些错误。为避免这个问题,我们不能将领域值当作简单的值集合来处理。

从Tony Hoare的开创性工作中我们了解到,类型化不仅应包括已定义的值集合,还应包括对该类型值允许执行的操作。在经典的命令式语言中,为用户定义类型实现这一点很困难,但在面向对象的语言中,我们实际上可以“免费”获得这个选项。

AccountNumber类型的值为例,其允许的操作并不像听起来那么简单。账户号码应允许进行加法和关系运算,因为银行之间批量转账时,账户号码的总和通常作为校验和进行传输。此外,一些银行会在账户号码中添加额外信息,比如可以从账户号码中推导出客户号码或账户类型。这些都是该类型允许的操作。

随着特殊值的引入,我们还可以为处理这些值定义适当的语义。在银行示例中,尝试将一个未定义的账户号码与一个“正常”号码相加可能会导致异常。

另一方面,将领域值类型实现为类也有一些缺点。为避免严重的陷阱,我们必须确保属于领域值类的值始终通过值语义而不是引用语义来处理。这意味着一个领域值对象不能通过两个标识符进行修改,更具体地说,领域值对

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询