这不是关于最近的一个问题,更像是历史问题,我认为我刚刚找到了至少一个答案。我在一家商店工作,其中建筑师坚持要求我们的实体的许多字段是只读的,即没有任何类型的制定者。我的意思是我们正在使用Hibernate,显然你可以将这些字段注释为只读......但他的要求是消除了setter,因此它们无法在不使用Reflection的情况下进行设置。他甚至编写了一套实用工具,使用Reflection设置这些字段进行测试,如果模式发生了变化,你必须扩展它们。我的问题在于它是狗慢,一大堆看似不必要的代码总是在改变。当然可以使用模拟,但如果您的数据非常重要,那么这些模拟也会变得很痛苦。现在我发现了一些看起来很好的答案,但我想听听社区的意见,因为它可能不是最好的答案。首先,我怀疑我们是否应该这样做。
答案 0 :(得分:0)
你有几种方法:
请勿使用:
建设者示例:
interface Model (
A getA();
...
)
public final class ModelBuilder {
private ModelBuilder() {...}
public static ModelBuilder newBuilder() {...}
public ModelBuilder setA(A a) (...) // keep 'a', return 'this'
...
public Model build() {...}
}