并非所有不可变对象都是值对象。顺便说一句,在设计时,请考虑理想对象只有不可变的字段和无参数方法。
关于启发式,一种有效的方法可以考虑如何使用对象:如果您构建实例,则调用一些方法,然后使用它完成(或将其存储在字段中),这可能不是值对象。相反,如果将对象保留在某种数据结构中,然后将它们与比较,则.equals()
可能会有一个value对象。对于将用于键Map
s的对象尤其如此。
值对象应该自己进行自动测试(测试通常很容易读写,因为它很简单),但是没有必要对它们进行模拟:模拟接口的主要实际原因是实现类
都不适用于值对象。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句