我最近看了this youtube tutorial关于空对象设计模式。尽管其中存在一些错误:例如不执行任何操作的 NullCar 创建了一个无限循环,但这个概念得到了很好的解释。我的问题是,当可以为 null 的对象具有 getter 并在您的代码中使用时,您会怎么做?你怎么知道默认返回哪个值?或者我应该在所有对象中实现这个模式吗?如果我需要返回字符串或原语怎么办?我是从 Java 的角度谈的。
编辑:我不会将空对象测试换成默认值测试吗?如果不是,为什么不呢?
最佳答案
Null 对象的目的是避免在代码中引用 Null。空对象 getter 返回的值取决于您的域。零或空字符串通常是合适的。
如果我们将 Null Object 模式应用到现实生活中,您的问题类似于“没有人多大了?”。
也许您的设计可以改进,因为您似乎没有遵循 tell, don't ask原则。
编辑:Null Object design pattern通常在一个对象将行为委托(delegate)给另一个对象时使用(例如在策略或状态设计模式中);正如 Tom Hawtin - tackline 评论的那样,使用 Special Case Objects对于返回值的对象。
关于java - 空对象设计模式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/318657/