我有一个服务A
,它监听来自队列的消息并调用另一个服务B
来获取一些值假设为val1...x。
假设我的实体是
Entity
|- val1
|- val2
|
... val1n
service B
填充的值假设实体中有 x
个值。
在服务调用之后,服务 A
计算一些值并填充实体中的其他字段。
实体
建模的可能方法
[1] 使实体不可变,并使实体的每次更新都复制所有值 1...x 以创建一个新对象。
[2] 使实体部分不可变,例如声明 val1...x final 和其他非最终的,因此我可以使用 setters
来设置它们的值。
编辑:[3] 继续传递 Builder 对象,当所有值 val1...n 已填充时调用 build() 函数。
EDIT2 : [4] 有两个不可变的独立对象(私有(private)内部)- val1...x 和不可变的 valx..n。每次在 valx..n 上发生一些更新时,我都会创建可变对象的新副本并引用不可变对象(immutable对象)。
最佳答案
如果我理解正确,您愿意在一项服务中创建对象,填充一些字段,而不是将其传递给另一项服务,然后填充其余部分?这样之后,对象就完成了吗?
如果是这样,我会使用 Builder 模式,填充构建器的字段,一旦完成 - 构建不可变对象(immutable对象)
关于java - 我应该使对象可变吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31381049/