问题是关于使用immutables java库。
在他们的文档中,他们似乎只使用ImmutableValueObject
构造实例,然后在代码中使用ValueObject
(接口或抽象基类),如下所示:
ValueObject valueObject =
ImmutableValueObject.builder()
.name("My value")
.addCounts(1)
.addCounts(2)
.build();
始终只使用ImmutableValueObject
?
e.g:
ImmutableValueObject valueObject =
ImmutableValueObject.builder()
.name("My value")
.addCounts(1)
.addCounts(2)
.build();
特别是对于方法参数等,ValueObject
不保证不变性(例如某人可能只是将ValueObject
子类化并传递可变实例。)
通常,我想使用一个接口,因为我可以在我的测试中使用不同的实现。但是在一个不可变对象(它只是一个数据对象)的情况下,我不需要这个:在测试中我只是按照它应该的方式准备我的对象。
还有其他原因,我错过了吗?