我在 Effective Java:Programming Language Guide中阅读了一些内容 Joshua Bloch 并发现我应该避免使用可变对象。因为我读过这本书,所以我知道如何使一个可变对象不可变(例如使用私有和最终修饰符)。
但是我有一个带有一些私有字段的“虚拟”data holder class
。每个字段都可以使用get方法和相应的set方法访问。因此,由于此set方法,此类的对象不是不可变的。
现在的问题是如何避免这些设定方法?将所有(例如20个)参数传递给对象构造函数?我认为这不是很好的设计,因为我必须保持参数的顺序,如果我不想设置一个特殊的参数,必须传递空引用等等。
所以我考虑采用以下方法:
在下一步中,我将已配置和创建的data holder objects
存储在列表中。
读取对象modify
尽管它是不可变的最佳方法是什么?使用静态工厂方法创建一个新对象,该方法在内部设置新值并将其替换为列表中的对象?