gpt4 book ai didi

oop - 这种方法属于哪里?

转载 作者:行者123 更新时间:2023-12-01 03:01:00 25 4
gpt4 key购买 nike

假设我有一个从 UI 输入的模型地址。我必须验证地址永远不会以不完整的状态保存到系统中(无论这对业务意味着什么)。

当用户在 UI 中输入一个地址时,它会被序列化为一个 Address 对象。
所以我想知道:像“isComplete”这样的方法属于哪里?验证器还是模型?

如果我将该方法放入地址模型并调用 address.isComplete()在保存之前的验证器中,它意味着不完整的地址是一个有效的系统状态;如果我在验证器中进行完整性检查,感觉验证器对地址内部结构有太多了解。

我想知道,其他人遵循什么一般惯例?

编辑 :
正如下面有人提到的,在上面的例子中,地址对象在多个系统中被重用,一个系统中的“完整”对象可能并不意味着另一个系统中的“完整”对象。因此,没有一致的方法在全局范围内强制执行“永远不应在无效状态下构造对象”,因为无效状态是依赖于上下文的。

最佳答案

听起来您需要一个 AddressFactory,您可以在其中传递地址的数据,它会为您提供有效地址或错误(异常/无论如何)。您认为创建无效地址并不理想是正确的。

如果这样做,您应该确定谁可以创建 Address 对象,以及是否可以在不使用 AddressFactory 的情况下创建它们。如果是这样,那么 Address 对象本身需要防止无效输入,并且 Address 对象本身具有有效性检查的参数变得更强。

关于oop - 这种方法属于哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/773811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com