gpt4 book ai didi

java - OOD - 设置一次值,使其无法更改

转载 作者:行者123 更新时间:2023-11-30 04:58:43 27 4
gpt4 key购买 nike

我正在尝试了解信息隐藏的原理。假设我有一个车辆类,其中包含 getSpeed、setSpeed、getEngine、setEngine、getVIN、setVIN 等方法。为了强制执行信息隐藏,我不想为客户端类提供 setVIN 的能力,因为车辆只有一个 VIN (我可能错了)。我对如何使此类应用信息隐藏感到有点困惑。我不想将 setVIN 设为私有(private)。但是如何设置VIN一次并且之后不允许再次设置呢?或者我应该这样做吗?

最佳答案

信息隐藏意味着您不会暴露内部 VIN 字段以供外部直接修改。拥有 setter 并不违反隐藏原则,因为您可以控制字段的修改。

就您而言,如果您想确保 VIN 仅设置一次,最好的方法是在构造函数中设置它,然后删除 setVIN。

顺便说一句,虽然这是一个一般性问题(这很好),但如果您心中有一种特定的语言,那么它可能值得一提。例如,某些语言不允许非默认构造函数。在这种语言中,我会保留 setVIN,但让它在调用时检查 VIN 是否已设置。如果有,则忽略该调用,或引发异常。

关于java - OOD - 设置一次值,使其无法更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7659292/

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